群晖通过 acme.sh 申请 ZeroSSL 泛域名证书(适配 80 端口封锁)+ 自动续期同步完整步骤

说明

  • 适配场景:运营商封锁 80 端口,无法通过 HTTP-01 验证申请证书
  • 证书类型:泛域名 SSL 证书(xjunqiang.cn + *.xjunqiang.cn),有效期 90 天
  • 核心保障:自动续期 + 自动同步到指定证书目录,永久有效

一、前置准备

群晖开启 SSH 并登录,切换 root 用户:

sudo -i
  1. 获取阿里云 AccessKey(域名解析需托管在阿里云):
    • 登录阿里云控制台 → 头像 → AccessKey 管理 → 创建 AccessKey
    • 保存AccessKey IDAccessKey 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 任务计划(兜底同步,双重保险)

  1. 登录 DSM → 控制面板 → 任务计划 → 新增 → 「计划的任务」→ 「用户定义的脚本」
  2. 常规设置:
    • 任务名称:证书同步到 QU91tw
    • 用户:root(必须选 root)
    • 勾选「启动时运行」(可选)
  3. 计划设置:
    • 频率:每月
    • 日期:23 号(acme.sh 续期后 1 天)
    • 时间:凌晨 3 点
  4. 任务设置 → 执行命令:/root/.acme.sh/sync_qu91tw.sh
  5. 保存并测试运行(无报错即成功)

八、验证所有配置(可选)

# 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

------------------------------------------------------------------------------------------------------------------------------------------

核心保障逻辑

  1. 自动续期:acme.sh 默认提前 30 天(2026-02-23)自动续期证书
  2. 自动同步:续期后通过 RENEW_HOOK 自动执行脚本,同步新证书到 QU91tw
  3. 兜底同步:DSM 任务计划每月 23 号强制同步,避免钩子失效
  4. 权限保障:同步脚本自动修复证书权限,符合群晖要求

关键注意事项

  1. 阿里云 AccessKey 需保留 DNS 解析 API 权限,不可删除 / 禁用
  2. 证书有效期 90 天,续期后自动刷新,无需手动干预
  3. 同步脚本仅影响 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

posted @ 2025-12-26 11:21  showonce  阅读(88)  评论(0)    收藏  举报