群晖 NAS Let's Encrypt 泛域名证书自动更新

Scroll Down

我们都知道可以使用 Let’s Encrypt 免费申请 HTTPS 证书。而且现在acme协议版本更新了,开始支持泛域名(wildcard)了,这样可以只申请一个类似*.xxx.com的证书,而不需要单独为每个子域名申请证书了。很爽~

大神已经对 acme 脚本做了群晖 NAS 的适配——syno-acme,我们就是要基于该脚本实现群晖 NAS 泛域名证书的自动更新~

1.下载脚本

可以直接下载作者打包好的工具:syno-acme v0.2.1,然后上传到 NAS 任意目录,并解压。

2.配置脚本参数

编辑脚本的配置文件config,主要修改一下几个字段:

# 域名
export DOMAIN=xxx.com
# DNS 服务商
export DNS=dns_ali
# 阿里云DNS key
export Ali_Key=xxx
export Ali_Secret=yyy

笔者DNS服务商是阿里云,如果是其他服务商,需要根据服务商修改

3.配置定时任务

在 NAS 文件管理中获取到ceet-up.sh脚本的绝对路径,打开控制面板 / 任务计划 / 新增 / 计划的任务 / 用户自定义的脚本,用户选root,添加以下命令(笔者的是如下路径):

/document/cert/syno-acme/cert-up.sh update >> /document/cert/syno-acme/log.txt 2>&1

设置为每月执行一次即可(Let’s Encrypt3个月更新一次)。

添加后可立即运行一次脚本。

这样脚本就会运行,自动更新证书,并重启web服务器加载新的脚本。以后,NAS会每隔一个月执行一次该脚本,自动更新证书。

需要注意的是,大神的脚本会将默认的群晖官方的证书删除(会有备份),并将 Let’s Encrypt 证书设置为默认证书。

4.回滚

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

/document/certs/syno-acme/cert-up.sh revert

回滚时需要指定回滚到的日期,如果不指定则会以latest作为目标回滚,latest 则指向了最新的备份~,具体可参见下图:
synoacmerevert.png

acme 会将证书备份到/document/cert/syno-acme/backup目录,也可以手动导入恢复。