1. 准备工作
因为我介绍的方法是一键替换群晖的默认证书,所以,为了防止意外,最好保证你的证书列表里只有一条记录,即默认证书那一条。实际上因为支持了泛域名证书,基本上这一条记录就足够用了(当然,如果你要管理多个域名,可能本文的方法并不适用)。开始工作前你的证书列表大概应该是这个样子:
2. 下载一键更新脚本
这是一键脚本的项目地址:andyzhshg/syno-acme。
这是青木堂测妹的版本地址:测妹修改版
可以通过 File Station 将下载的工具上传到NAS的任意目录下,并解压。
解压后大概是这个样子:
3. 配置脚本参数
编辑脚本的配置文件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
。打开对应文件, 一般都可以在文件的头部找到需要设置的授权信息对应的密钥。
config
模板中没有的服务商,请大家自行完善。
4. 配置定时任务
i. 查找脚本路径
在 File Station 中定位到下载的一键脚本的目录,查看该脚本(cert-up.sh)的绝对路径:
/volume1/docker/fanyuming/syno-acme-master/cert-up.sh
打开putty 链接到群晖
获取群晖NAS ROOT权限---sudo -i
输入 bash /volume1/docker/fanyuming/syno-acme-master/cert-up.sh update
运行
运行结果类似下图为成功
ii. 创建定时任务
打开 控制面板 / 任务计划 / 新增 / 计划的任务 / 用户自定义的脚本
:
设置任务名称和操作用户,需要注意的是这里一定要选择root
:
设置计划的时间和周期,这里只支持按月或者年重复,我们只能取按月重复才能满足 Let’s Encrypt 至少3个月更新一次的要求:
设置执行脚本,这里我们将脚本的输出重定向到了一个log.txt
的文件中,以方便后期查看脚本的执行情况:
上图红框中的脚本命令为(注意没有换行):
/volume1/docker/fanyuming/syno-acme-master/cert-up.sh update >> /volume1/docker/fanyuming/syno-acme-master/log.txt 2>&1
具体的路径是步骤 i
中复制的路径。
最后在新建脚本上右键运行
这样脚本就会运行,自动更新证书,并重启web服务器加载新的脚本。以后,NAS会每隔一个月执行一次该脚本,自动更新证书。
最后看一下运行结果是否正常
iv. 回滚
脚本里提供了回滚命令,可以通过ssh登录到nas,定位到对应目录,执行如下命令回滚证书目录到备份的状态:
/volume1/docker/fanyuming/syno-acme-master/cert-up.sh revert
总结
这个一键脚本的特点是最小限度的触碰系统文件,仅/usr/syno/etc/certificate/_archive
目录会被更改。acme.sh
工具随用随时下载,保持最新,用完即删除,不占用磁盘空间。
这基本就是本文的全部了,如果大家使用中遇到问题,可以在这里留言或者到 https://github.com/andyzhshg/syno-acme/issues 提issue。