使用 acme.sh 给群晖申请 SSL 证书

版本

acme.sh 版本: v3.0.8

DSM 版本: DSM 7.2.1-69057 Update 5

若版本不一致,以下步骤可能无效。

使用 ssh 登录到 nas

参考: https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet

安装 acme.sh

执行 curl https://get.acme.sh | sh -s [email protected] 即可安装。如果报错提示需要安装 crontab,可以使用 –force 参数强制安装。参看 https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#1-how-to-install

申请证书

  1. 申请 cloudflare token: https://dash.cloudflare.com/profile/api-tokens 。如果使用别的 DNS 服务提供商,需要参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi#1-cloudflare-option
  2. 导出 token:export CF_Token="xxxx"
  3. 导出 email:export CF_Email="[email protected]"
  4. 执行命令:/root/.acme.sh/acme.sh --issue --dns dns_cf --server letsencrypt -d xxx.com -d '*.xxx.com'

把证书部署到 DSM 中

  1. 接下来把证书放到群晖的 DSM 中,参考: https://github.com/acmesh-official/acme.sh/wiki/deployhooks#20-deploy-the-certificate-to-synology-dsm
  2. 导出群晖的管理员用户名: export SYNO_USERNAME="xxx"
  3. 导出群晖的管理员密码:export SYNO_PASSWORD="xxx"
  4. 导出群晖 DSM 使用的 http schema:export SYNO_SCHEME="http"。可选 http 或者 https,默认为 http
  5. 导出群晖 DSM 的 url:export SYNO_HOSTNAME="localhost"。可选,默认为 localhost
  6. 导出 DSM 所在的端口号:export SYNO_PORT="5000"。可选,默认为 5000
  7. 执行:/root/.acme.sh/acme.sh --deploy --deploy-hook synology_dsm -d xxx.com,如果开启了两步验证,会被要求输入 OTP 码(从群晖的 Secure SignIn APP 获取)

注意:
以上环境变量需要区分大小写。

renew 证书

定时执行以下脚本:

#!/bin/bash
 
export CF_Token="xxx"
 
export CF_Email="[email protected]"
 
/root/.acme.sh/acme.sh --renew -d xxx.com
 
 
export SYNO_USERNAME="xxx"
 
export SYNO_PASSWORD="xxx"
 
export SYNO_SCHEME="http"
 
export SYNO_HOSTNAME="localhost"
 
export SYNO_PORT="5000"
 
/root/.acme.sh/acme.sh --deploy --deploy-hook synology_dsm -d xxx.com

如何执行定时任务,参考官网群晖文档: https://kb.synology.cn/zh-cn/DSM/help/DSM/AdminCenter/system_taskscheduler?version=6