说明
- 适配场景:运营商封锁 80 端口,无法通过 HTTP-01 验证申请证书
- 证书类型:泛域名 SSL 证书(xjunqiang.cn + *.xjunqiang.cn),有效期 90 天
- 核心保障:自动续期 + 自动同步到指定证书目录,永久有效
一、前置准备
群晖开启 SSH 并登录,切换 root 用户:
sudo -i
- 获取阿里云 AccessKey(域名解析需托管在阿里云):
- 登录阿里云控制台 → 头像 → AccessKey 管理 → 创建 AccessKey
- 保存
AccessKey ID和AccessKey Secret(后续配置用)
二、安装 acme.sh(适配群晖精简系统)
# 强制安装acme.sh(忽略crontab/socat提示)
curl https://get.acme.sh | sh -s email=你的邮箱@163.com --force
# 加载acme.sh(群晖ash shell无需bashrc)
alias acme.sh='/root/.acme.sh/acme.sh'
三、配置阿里云 API 并申请证书(DNS-01 验证)
# 替换为你的阿里云AccessKey
export Ali_Key="你的AccessKey ID"
export Ali_Secret="你的AccessKey Secret"
# 申请泛域名证书(自动添加/删除DNS TXT记录)
/root/.acme.sh/acme.sh --issue --dns dns_ali -d xjunqiang.cn -d *.xjunqiang.cn --force
- 等待脚本执行完成,看到
Cert success即为申请成功 - 证书生成路径:
/root/.acme.sh/xjunqiang.cn_ecc/
四、将证书部署到未使用的 QU91tw 目录(安全替换)
# 1. 备份QU91tw原证书
mkdir -p /usr/syno/etc/certificate/_archive/QU91tw/bak
cp /usr/syno/etc/certificate/_archive/QU91tw/*.pem /usr/syno/etc/certificate/_archive/QU91tw/bak/
# 2. 清空QU91tw旧证书
rm -f /usr/syno/etc/certificate/_archive/QU91tw/{cert,chain,fullchain,privkey}.pem
# 3. 复制新证书(适配acme.sh的.cer格式→群晖.pem格式)
cp /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.cer /usr/syno/etc/certificate/_archive/QU91tw/cert.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/ca.cer /usr/syno/etc/certificate/_archive/QU91tw/chain.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/fullchain.cer /usr/syno/etc/certificate/_archive/QU91tw/fullchain.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.key /usr/syno/etc/certificate/_archive/QU91tw/privkey.pem
# 4. 修复证书权限(群晖硬性要求)
chmod 400 /usr/syno/etc/certificate/_archive/QU91tw/*.pem
chown root:root /usr/syno/etc/certificate/_archive/QU91tw/*.pem
# 5. 验证证书有效期(应显示2026-03-26)
openssl x509 -in /usr/syno/etc/certificate/_archive/QU91tw/cert.pem -noout -dates
五、创建证书同步脚本(续期后自动覆盖 QU91tw)
这里的QU911w是我自己在DSM的证书正添加的,这个可以在SSH中去查看
# 创建同步脚本
cat > /root/.acme.sh/sync_qu91tw.sh << EOF
#!/bin/bash
# 同步续期后的证书到QU91tw
cp /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.cer /usr/syno/etc/certificate/_archive/QU91tw/cert.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/ca.cer /usr/syno/etc/certificate/_archive/QU91tw/chain.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/fullchain.cer /usr/syno/etc/certificate/_archive/QU91tw/fullchain.pem
cp /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.key /usr/syno/etc/certificate/_archive/QU91tw/privkey.pem
# 修复权限
chmod 400 /usr/syno/etc/certificate/_archive/QU91tw/*.pem
chown root:root /usr/syno/etc/certificate/_archive/QU91tw/*.pem
# 重启nginx生效
systemctl restart nginx
EOF
# 给脚本添加执行权限
chmod +x /root/.acme.sh/sync_qu91tw.sh
六、绑定续期钩子(acme.sh 续期后自动执行同步)
# 写入续期钩子到证书配置文件
sed -i '$a RENEW_HOOK="/root/.acme.sh/sync_qu91tw.sh"' /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.conf
# 验证钩子是否添加成功(显示RENEW_HOOK=脚本路径即成功)
grep "RENEW_HOOK" /root/.acme.sh/xjunqiang.cn_ecc/xjunqiang.cn.conf
七、配置 DSM 任务计划(兜底同步,双重保险)
- 登录 DSM → 控制面板 → 任务计划 → 新增 → 「计划的任务」→ 「用户定义的脚本」
- 常规设置:
- 任务名称:证书同步到 QU91tw
- 用户:root(必须选 root)
- 勾选「启动时运行」(可选)
- 计划设置:
- 频率:每月
- 日期:23 号(acme.sh 续期后 1 天)
- 时间:凌晨 3 点
- 任务设置 → 执行命令:/root/.acme.sh/sync_qu91tw.sh
- 保存并测试运行(无报错即成功)
八、验证所有配置(可选)
# 1. 查看acme.sh证书列表(确认Renew时间)
/root/.acme.sh/acme.sh --list
# 2. 手动测试同步脚本(无报错即成功)
/root/.acme.sh/sync_qu91tw.sh
# 3. 查看QU91tw证书最终有效期
openssl x509 -in /usr/syno/etc/certificate/_archive/QU91tw/cert.pem -noout -dates
九、备用命令(手动续期 / 同步)
# 手动续期证书
/root/.acme.sh/acme.sh --renew -d xjunqiang.cn --force
# 手动同步到QU91tw
/root/.acme.sh/sync_qu91tw.sh
# 回滚QU91tw原证书(如需恢复)
cp /usr/syno/etc/certificate/_archive/QU91tw/bak/*.pem /usr/syno/etc/certificate/_archive/QU91tw/ && systemctl restart nginx
核心保障逻辑
- 自动续期:acme.sh 默认提前 30 天(2026-02-23)自动续期证书
- 自动同步:续期后通过 RENEW_HOOK 自动执行脚本,同步新证书到 QU91tw
- 兜底同步:DSM 任务计划每月 23 号强制同步,避免钩子失效
- 权限保障:同步脚本自动修复证书权限,符合群晖要求
关键注意事项
- 阿里云 AccessKey 需保留 DNS 解析 API 权限,不可删除 / 禁用
- 证书有效期 90 天,续期后自动刷新,无需手动干预
- 同步脚本仅影响 QU91tw 目录,不干扰当前使用的 VfnWJK 证书
DSM 任务计划需确保用户为 root,否则无权限操作证书目录
------------------------------------------------------------------ 完*----------------------------------------------------------------------*
补充:
任务计划名称不要用中文,用英文的。
如何查看当前的默认证书(SSH):cat /usr/syno/etc/certificate/_archive/DEFAULT
如何查看自己在DSM中创建的证书信息(SSH):openssl x509 -in /usr/syno/etc/certificate/_archive/QU91tw/cert.pem -noout -dates