流程总结、留档
教程:为群晖 (DSM 7+) 申请并自动续订 Cloudflare 泛域名 SSL 证书(特殊网络环境版)
本教程的目标是为你的域名 1129.online 申请 *.1129.online 泛域名证书,将其部署到群晖,并设置一个能真正成功运行的自动续订任务。
阶段一:准备工作 (Cloudflare)
- 登录 Cloudflare 仪表板。
- 转到“我的个人资料” -> “API 令牌”。
- 点击“创建令牌”,然后选择“编辑区域 DNS”(”Edit zone DNS”)模板。
- 在“区域资源”下,选择“特定区域” ->
1129.online。 - 创建令牌,并立即复制生成的Token字符串。我们将其称为
[你的_CF_Token]。
阶段二:安装 acme.sh (绕过网络限制)
由于你的网络环境会拦截 curl 的直接下载,我们必须使用手动安装。
- 在你的 Mac 电脑上:
- 访问
https://github.com/acmesh-official/acme.sh - 点击 “Code” -> “Download ZIP”,将其下载到你的“下载”文件夹。
- 不要解压。
- 访问
- 登录你的群晖 DSM:
- 打开 File Station,在
Downloads(或任何)共享文件夹中,上传你刚下载的acme.sh-master.zip文件。
- 打开 File Station,在
- 通过 SSH 登录群晖:
ssh lionel@[你的群晖IP]sudo -i(输入密码[你的密码]切换到root用户)
- 解压并安装:Bash
# 1. 进入你上传文件的目录 cd /volume1/Downloads # 2. 使用 Python 解压 (因为 DSM 默认没有 unzip) python3 -m zipfile -e acme.sh-master.zip . # 3. 进入解压后的文件夹 cd acme.sh-master # 4. 运行安装脚本,并加入 --insecure 来绕过你网络中的 SSL 拦截 ./acme.sh --install -m [你的邮箱] --force --insecure- 脚本会成功安装到
/root/.acme.sh/。
- 脚本会成功安装到
阶段三:【关键】“一次性修复与部署”命令
这是我们所有调试工作的结晶。这一步将申请证书、正确部署、并生成一个完整的配置文件,以便将来自动续订。
- 在同一个 SSH 终端 (
root@DS920) 中,完整地复制并粘贴以下所有export命令:Bash# 1. 针对你的网络 SSL 拦截 (解决 Let's Encrypt 和 Cloudflare 的 error 60) export ACME_INSECURE='1' # 2. 你的 Cloudflare API 令牌 export CF_Token="[你的_CF_Token]" # 3. 你的群晖管理员账户信息 export SYNO_Username='lionel' export SYNO_Password='[你的密码]' # 4. 你的群晖登录端口和协议 (必须是 5001 和 https) export SYNO_Port='5001' export SYNO_Scheme='https' export SYNO_Use_SSL='1' # 5. 你的 2FA 设置 (用于自动续订) export SYNO_DEVICE_NAME="acme_auto_deploy" # 6. 【关键】针对你群晖自身证书的 SSL 拦截 (解决部署时的 error 60) export SYNO_INSECURE='1' - 在同一个 SSH 会话中,运行这个最终的“申请+部署+保存”命令:Bash
/root/.acme.sh/acme.sh --issue --dns dns_cf \ -d 1129.online \ -d *.1129.online \ --server letsencrypt \ --keylength ec-256 \ --deploy-hook synology_dsm \ --force - 【重要】 运行后,终端会提示你:Enter OTP code for user ‘lionel’:此时,输入你手机上的 6 位 2FA 验证码并按回车。
- 等待脚本运行完毕。它会成功获取证书并将其部署到 DSM。
阶段四:清理与配置 (安全与收尾)
- 【安全】 我们之前为了解决
error 60,可能创建了一个全局curl配置文件。必须删除它。Bash# 运行此命令以删除安全隐患 rm /root/.curlrc(提示“No such file or directory”是正常的,说明它已不存在。) - 【配置】 登录你的 DSM 网页界面。
- 进入“控制面板” -> “安全性” -> “证书” 选项卡。
- 点击顶部的“设置”按钮。
- 在“默认证书”一行,从下拉菜单中选择你新部署的
1129.online (ECC)。 - 确保下方列表中的所有服务(包括你的反向代理)也都切换到了
1129.online证书。 - 点击“确定”。
阶段五:创建最终的“自动化计划任务”
现在你的配置已经 100% 正确,我们可以放心地创建自动续订任务了。
- 在 DSM 网页界面,进入“控制面板” -> “计划任务”。
- 点击“新增” -> “计划的任务” -> “用户定义的脚本”。
- 常规 选项卡:
- 任务名称:
SSL 自动续订与部署 - 用户账号:
root - 已启动: 确保已勾选。
- 任务名称:
- 计划 选项卡:
- 选择“每天”,时间设为
03:00。
- 选择“每天”,时间设为
- 任务设置 选项卡:
- 在“用户定义的脚本”框中,完整粘贴以下脚本:
# 1. 针对你的网络 SSL 拦截 export ACME_INSECURE='1' # 2. 你的 Cloudflare API 令牌 export CF_Token="[你的_CF_Token]" # 3. 运行正确的续订检查命令 /root/.acme.sh/acme.sh --cron --home /root/.acme.sh - 点击“确定”保存。
阶段六:最终验证
- 在“计划任务”窗口,选中你刚创建的
SSL 自动续订与部署任务。 - 点击“运行”按钮。
- 等待几秒钟,再次选中它,点击“查看结果”按钮。
- 验证输出:你现在应该会看到我们最终的成功日志:[Thu Nov 6 16:35:18 CST 2025] Renewing using Le_API=https://acme-v02.api.letsencrypt.org/directory[Thu Nov 6 16:35:18 CST 2025] Skipping. Next renewal time is: 2026-01-04T08:34:46Z
看到这个日志,就代表你已大功告成。你的证书将实现全自动续订。
