本文最后更新于 2023-08-04,文章内容可能已经过时。

1. 准备工作

因为我之前的方法是一键替换群晖的默认证书,所以,为了防止意外,最好保证你的证书列表里只有一条记录,即默认证书那一条。实际上因为支持了泛域名证书,基本上这一条记录就足够用了(当然,如果你要管理多个域名,可能本文的方法并不实用)。所以开始工作前你的证书列表大概应该是这个样子:
aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvLzJlYzdhZWI1NTI1NTU3MmM3NWY5YTBlNDMyZGQ4NzVj

2.下载一键更新脚本

这是一键脚本的项目地址:

如果群辉的版本是7.0以上,就用7.0的脚本
直接下载链接

解压后大概是这个样子:
aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvL2EzNmE3MDJhYTBkMzczOGNkYjc1MThiZjQ1OGEyMGQy

3. 配置脚本参数

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

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

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

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

4. 配置定时任务

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

  • 创建定时任务
    打开 控制面板 / 任务计划 / 新增 / 计划的任务 / 用户自定义的脚本
    aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvL2JlY2UxMTAzODYzN2Q5M2Y0NzMzMmFhN2M0M2Y1ZTVm
    设置任务名称和操作用户,需要注意的是这里一定要选择 root :
    aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvLzdiMDcyN2M0MjEwYWJmM2ZmODQ1NGM5OTFiZjY5ODlj
    设置计划的时间和周期,这里只支持按月或者年重复,我们只能取按月重复才能满足 Let’s Encrypt 至少3个月更新一次的要求:
    aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvLzFmNmExZGJiOTY1NTMyMWQyYTk0ZjZlNDllNmZmNmZk
    设置执行脚本,这里我们将脚本的输出重定向到了一个 log.txt 的文件中,以方便后期查看脚本的执行情况:
    aHR0cHM6Ly9pbWcxLjNzNzguY29tL2NvZGVyY3RvLzM5MDQwMTUxMDc3M2JkYTM1MGYxZGFhOWFmZjYyZDIx
    上图红框中的脚本命令为(注意没有换行):

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

具体的路径是步骤 i 中复制的路径。

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

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

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