使用 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。