使用 acme.sh 为群晖 NAS 申请及自动更新 SSL 证书

一、下载 acme.sh

通过 SSH 登录到NAS后,为了简化操作,直接切换到 root 用户:

sudo -i

acme.sh 提供多种安装方式,支持 curl、wget 等工具。这里使用 Git 克隆项目:

git clone https://github.com/acmesh-official/acme.sh.git

进入项目目录:

cd acme.sh

执行安装命令,将 acme.sh 安装到 /usr/local/share/acme.sh,并禁用自动创建 Cron 任务:

./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmail.com"

安装完成后,加载环境变量:

source ~/.profile

二、配置 DNS API

1. 设置默认 CA

将 Let’s Encrypt 设置为默认证书颁发机构:

acme.sh --set-default-ca --server letsencrypt

2. 配置阿里云 DNS API Key

设置阿里云 API 凭据:

登录阿里云控制台点击右上角主账号区域,点击 AccessKey – 使用RAM用户AccessKey – 创建用户后添加授权,添加 AliyunDNSFullAccess 权限

export Ali_Key="AccessKey ID"
export Ali_Secret="AccessKey Secret"

三、申请证书并部署到群晖 DSM

1. 申请 SSL 证书

使用阿里云 DNS API 完成域名验证并申请证书:

./acme.sh --issue --dns dns_ali --home . -d xxx.com

2. 部署证书到群晖 DSM

设置通过临时管理员账户部署证书,无需提供 DSM 管理员凭据:

export SYNO_USE_TEMP_ADMIN=1

执行证书部署:

./acme.sh --deploy --home . -d xxx.com --deploy-hook synology_dsm

3. 自定义 DSM 管理端口(可选)

如果 DSM 使用的不是默认管理端口 5000,需要指定实际端口。

例如,使用 HTTPS 端口 5001:

export SYNO_PORT="5001"

设置完成后,再执行证书部署命令。

四、配置证书定时更新

为了确保证书在到期前能够自动更新,可以通过群晖 DSM 的计划任务定期执行 acme.sh。

1. 创建计划任务

打开群晖 DSM,进入:

控制面板 → 任务计划 → 新增 → 计划的任务 → 用户定义的脚本

2. 常规设置

  • 任务名称:Update default Cert
  • 用户账号:root

3. 任务设置

在「运行命令」字段中填写:

/usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh

4. 设置执行时间

根据需要设置定时执行频率,例如每周执行一次。

acme.sh 会自动检查证书是否需要续期,并在满足续期条件时执行更新。

5. 邮件通知(可选)

可以勾选「通过电子邮件发送运行详情」,以便任务执行完成后接收运行结果通知。

五、完成

配置完成后,acme.sh 将通过群晖 DSM 的计划任务定期检查 SSL 证书的有效期,并在需要时自动续期。

通过 synology_dsm 部署钩子,可以在证书更新后自动将新证书部署到群晖 DSM。

类似文章