考虑到 ZeroSSL 对比 Let's Encrypt 有更好兼容性,且接口不存在使用频率的限制。因此本脚本默认使用 ZeroSSL 作为证书签发服务器。

ZeroSSL.jpg

部署教程

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.git 

3、配置文件

建议先在 ZeroSSL 官方网站:https://zerossl.com/ 使用邮箱注册账号,然后使用同一个邮箱账号配置 config 变量中的 ZeroSSL_Email

使用 vimnano 命令修改 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 或 letsencrypt 
export SERVER_NAME="zerossl"

# 填写用于注册 ZeroSSL 账号的邮箱
export [email protected]

# 填写 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 20221023030003

2)日志查看

查看最近 1000 条日志记录,寻找问题根源。

tail -n 1000 /volume1/syno-acme/log.txt 

3)常见问题

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.pem

3.3)问题三

兼容性相关问题可通过 https://ssl-config.mozilla.org/ 在线工具,依据服务器环境生成 SSL 配置文件来获得更好的证书兼容性。


相关推荐

  1. 群晖 Synology 部署 Bitwarden 密码管理器
  2. 在群晖 Synology 上搭建 Bark 消息推送服务器
  3. 因群晖NAS系统CA证书失效导致的系列问题
  4. 在群晖NAS上搭建Cloudreve网盘系统
  5. ChineseSubfinder - 电影剧集中文字幕刮削器(群晖 Docker 部署篇)
  6. 群晖 Synology FTP 连接报错 "500 Illegal PORT range rejected" 解决方案
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/5199.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。