群晖部署ZeroSSL泛域名证书实战指南
考虑到 ZeroSSL 对比 Let’s Encrypt 有更好兼容性,且接口不存在使用频率的限制。因此本脚本默认使用 ZeroSSL 作为证书签发服务器。

部署教程
1、启用 SSH 服务
进入 DSM 控制面板 > 终端机和 SNMP > 终端机,勾选启用 SSH 服务。指定 SSH 连接的端口号并保存设置。为了确保系统安全性,建议将默认端口 22 替换为其他端口号。更多详见《群晖Synology如何获取root权限?》
2、克隆源码
# 切换为root用户sudo -i
# 进入目录cd /volume1
# DSM 6.x 系统git clone https://github.com/hugoyue/syno-acme.git
# DSM 7.x 系统git clone -b dsm7 https://github.com/hugoyue/syno-acme.git3、配置文件
建议先在 ZeroSSL 官方网站:https://zerossl.com/ 使用邮箱注册账号,然后使用同一个邮箱账号配置 config 变量中的
ZeroSSL_Email
使用 vim 或 nano 命令修改 config 配置文件
vim /volume1/syno-acme/config根据注释信息,进行修改:
# 你主域名,如 baidu.com sina.com.cn 等export DOMAIN=your_domain
# DNS类型,根据域名服务商而定,例如阿里云对应(dns_ali),Dnspod 对应(dns_dp)等export DNS=dns_xxx
# DNS API 生效等待时间 值(单位:秒)# 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)export DNS_SLEEP=600
# 设置证书签发服务器 zerossl 或 letsencryptexport SERVER_NAME="zerossl"
# 填写用于注册 ZeroSSL 账号的邮箱export ZeroSSL_Email=email@example.com
# 填写 dns_ali 对应阿里云域名服务商提供的授权密钥export Ali_Key="LTqIA87hOKdjevsf5"export Ali_Secret="0p5EYueFNq501xnCPzKNbx6K51qPH2"
# 填写 DNS=dns_dp 对应 DNS 域名平台提供的授权密钥export DP_Id="1234"export DP_Key="sADDsdasdgdsf"
# 若需要开启bark通知,请取消 # 注释符,并替换 BARK_API_URL#export BARK_API_URL="https://api.day.app/XXXXXXXXXXXXXXXXXXXXXX"#export BARK_SOUND="newmail"#export BARK_GROUP=ACME其它域名服务商,可以参照 https://github.com/acmesh-official/acme.sh/tree/master/dnsapi 来添加自己的配置。一般情况下,这个页面每个文件对应一个域名服务商,比如dns_ali.sh对应阿里云,文件名去掉.sh扩展名就是DNS类型,比如阿里云的DNS类型就是dns_ali。
4、脚本执行
# 赋予执行权限chmod +x /volume1/syno-acme/cert-up.sh
# 生成证书/更新证书/volume1/syno-acme/cert-up.sh update >> /volume1/syno-acme/log.txt 2>&1定时任务
免费的 ZeroSSL 证书有效期只有三个月,这里我们配置一条定时任务,使其保持在每月1日1时整,执行一次更新
# 编辑 crontab 文件vim /etc/crontab
# 增加一条任务计划,保存并退出0 1 1 * * root /volume1/syno-acme/cert-up.sh update >> /volume1/syno-acme/log.txt 2>&1重启 CRON 服务,使其生效。
# DSM 6.x 系统synoservice --restart crond
# DSM 7.x 系统synosystemctl restart crond日常维护
1)执行回滚
更新证书命令执行过程中,会以当前系统日期时间命名创建文件夹,为当前系统证书创建备份,备份文件路径位于 /volume1/syno-acme/backup 下,存储在以时间日期命名的文件夹内,例如 20221023030003
# 回滚到最近的一次备份/volume1/syno-acme/cert-up.sh revert
# 回滚到指定日期、时间的备份,例如 20221023030003/volume1/syno-acme/cert-up.sh revert 202210230300032)日志查看
查看最近 1000 条日志记录,寻找问题根源。
tail -n 1000 /volume1/syno-acme/log.txt3)常见问题
3.1)问题一
若证书服务器使用的是 zerossl,在进行 DNS 验证过程时出现提示信息 Processing, The CA is processing your order, please just wait. 无法完成验证,请修改 config 文件,将:
export SERVER_NAME="zerossl"修改为:
export SERVER_NAME="letsencrypt"然后,重新执行 生成证书/更新证书 的相关命令。
3.2)问题二
若证书服务器使用的是 letsencrypt,如果出现 code:60 错误,无法建立SSL连接,请升级群辉内置CA机构根证书,请以 root 用户执行以下命令:
# 备份根证书mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak
# 更新根证书curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem3.3)问题三
兼容性相关问题可通过 https://ssl-config.mozilla.org/ 在线工具,依据服务器环境生成 SSL 配置文件来获得更好的证书兼容性。
推荐文章
基于标签匹配 · 智能推荐支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
喵斯基部落