本文章转载于群晖 Let’s Encrypt 泛域名证书自动更新 | UP4DEV,此文章为我做的一个教程备份,内容会有所缩减。

准备工作

因为此方法是一键替换群晖的默认证书,所以,为了防止意外,最好保证你的证书列表里只有一条记录,即默认证书那一条。

下载一键更新脚本

这是一键脚本的项目地址:andyzhshg/syno-acme,进入下载程序包。

可以通过 File Station 将下载的工具上传到NAS的任意目录下,并解压。

解压后是这个样子:

配置脚本参数

编辑脚本的配置文件config,如图所示,需要编辑的几个字段我用蓝框标记出来了。

首先是DOMAIN,也就是你的域名。

然后是DNS的类型,根据服务商的不同,DNS类型各不相同,比如阿里云(dns_ali),Dnspod(dns_dp),Godaddy(dns_gd)等。

最后要根据不同的域名服务商提供的授权密钥等信息,比如我的域名服务商是阿里云,我需要编辑Ali_Key和Ali_Secret字段,字段的内容需要到域名服务商的管理后台来查看,因为不同的服务商的查看方式不同,请根据自己的实际情况去查找。

需要指出的是,我给出的配置文件模板并没有给出所有acme.sh支持的域名服务商,大家可以参照 https://github.com/acmesh-official/acme.sh/tree/master/dnsapi来添加自己的配置。一般情况下,这个页面每个文件对应一个域名服务商,比如dns_ali.sh就是对应阿里云,文件名去掉.sh扩展名就是DNS类型,比如阿里云的DNS类型就是dns_ali。打开对应文件, 一般都可以在文件的头部找到需要设置的授权信息对应的密钥。

 

2022.05.01 : 由于最新版acme原默认服务提供商从Let’s Encrypt变为ZeroSSL,所以现在首次执行时会提示失败,原因在于使用ZeroSSL作为服务提供商,需要在生成证书前,先关联ZeroSSL的注册邮箱,这里根据使用的服务商不同,提供2种解决方法供参考:

打开cert-up.sh文件

1、对于仍使用Let’s Encrypt的,需要在代码51行处“${ACME_BIN_PATH}/acme.sh –force –log –issue –dns ${DNS} –dnssleep ${DNS_SLEEP} -d ${DOMAIN} -d *.${DOMAIN}”的末尾加上使用的服务商 “–server letsencrypt”。

2、对于使用ZeroSSL,在上文处提到的代码后加上使用的服务商“–server zerossl”,同时在这一行前面加上一行代码:

${ACME_BIN_PATH}/acme.sh –register-account -m 你的邮箱 –server zerossl

关联ZeroSSL的注册邮箱,后续的证书在你的ZeroSSL网站后台也能查看到。

 

这里我也提供修改好的cert-up.sh文件cert-up供参考。(此文件修改内容如下:1、增加自动效验acme.sh版本,有新版则自动升级acme.sh;2、增加 ZeroSSL 账户自动注册代码)

使用我这个文件,需要在config文件中增加以下参数(若第一处填写zerossl,则第二处邮箱必须填写)

# 证书服务商 zerossl 和 letsencrypt
export CERT_SERVER=zerossl

# ZeroSSL 注册邮箱账户
export ACCOUNT_EMAIL=”你的邮箱@csyan.cn”

 

 配置定时任务

在 File Station 中定位到下载的一键脚本的目录,查看该脚本的绝对路径,复制完整的绝对路径到剪贴板。

打开 控制面板 / 任务计划 / 新增 / 计划的任务 / 用户自定义的脚本,设置任务名称和操作用户,需要注意的是用户账号这里一定要选择root。

设置计划的时间和周期,这里只支持按月或者年重复,我们只能取按月重复才能满足 Let’s Encrypt 至少3个月更新一次的要求;

设置执行脚本,这里我们将脚本的输出重定向到了一个log.txt的文件中,以方便后期查看脚本的执行情况:

上图红框中的脚本命令为(注意没有换行):

/volume1/nas_share/certs/syno-acme/cert-up.sh update >> /volume1/nas_share/certs/syno-acme/log.txt 2>&1

试运行脚本

可以在新建的任务上点击右键立即执行任务,这样脚本就会运行,自动更新证书,并重启web服务器加载新的脚本。以后,NAS会每隔一个月执行一次该脚本,自动更新证书。

回滚

脚本里提供了回滚命令,可以通过ssh登录到nas,定位到对应目录,执行如下命令回滚证书目录到备份的状态:

/volume1/nas_share/certs/syno-acme/cert-up.sh revert

总结

这个一键脚本的特点是最小限度的触碰系统文件,仅/usr/syno/etc/certificate/_archive目录会被更改。acme.sh工具随用随时下载,保持最新,用完即删除,不占用磁盘空间。

这基本就是本文的全部了,如果大家使用中遇到问题,可以在这里留言或者到 https://github.com/andyzhshg/syno-acme/issues 提issue。

说点什么
教程内容无法面面俱到,有疑问的可以留言讨论|´・ω・)ノ
支持Markdown语法
在"群晖:syno-acme泛域名证书自动更新"已有2条评论
Loading...