群晖无docker使用acme.sh加Aliyun的DNS更新证书
群晖无docker使用acme.sh加Aliyun的DNS更新证书
本文首发地址 https://h89.cn/archives/343.html
最新更新地址 https://gitee.com/chenjim/chenjimblog
在群晖系统中不使用 Docker 直接通过 acme.sh 结合阿里云 DNS 更新 SSL 证书,可参考以下步骤:
准备工作
- 阿里云 API 密钥获取
登录阿里云控制台,进入 RAM 访问控制 > 用户管理,创建子账号并授予 DNS 管理权限(AliyunDNSFullAccess)。
生成子账号的 AccessKey ID 和 Secret,保存备用。 - 群晖环境准备
开启 SSH 服务(控制面板 > 终端机和 SNMP > 启用 SSH)。
使用终端工具(如 PuTTY)以 root 权限登录群晖(需先通过 sudo -i 提权)。
安装 acme.sh
-
通过 SSH 安装脚本
执行以下命令安装到本地环境:git clone https://gitee.com/neilpang/acme.sh.git cd acme.sh ./acme.sh --install -m my@example.com
-
配置阿里云 DNS 验证
设置阿里云 API 密钥环境变量:
export Ali_Key="你的AccessKey ID"
export Ali_Secret="你的AccessKey Secret"
申请证书
- 生成泛域名证书
运行以下命令(替换 yourdomain.com 为实际域名):
acme.sh --issue --dns dns_ali -d yourdomain.com -d *.yourdomain.com --server letsencrypt
dns_ali 表示使用阿里云 DNS 验证。
脚本会自动调用阿里云 API 添加 DNS 解析记录验证域名所有权。 - 证书生成位置
证书默认保存在 ~/.acme.sh/yourdomain.com/ 目录,包含 fullchain.cer 和 yourdomain.com.key 文件。
部署证书到群晖
- 手动部署命令
acme.sh --deploy -d yourdomain.com --deploy-hook synology_dsm
需提前设置群晖登录信息(若开启两步验证需配置专用账号或临时关闭):
export SYNO_Username="群晖管理员账号"
export SYNO_Password="密码"
export SYNO_Port="5000" # 群晖管理端口
- 验证证书更新
登录群晖控制面板 > 安全性 > 证书,检查默认证书是否更新为新的 Let's Encrypt 证书。
配置自动续期
-
创建定时任务
进入群晖 控制面板 > 任务计划 > 新增 > 用户自定义脚本。
任务设置示例:
-
续期证书并部署
/root/.acme.sh/acme.sh --cron --home /root/.acme.sh
/root/.acme.sh/acme.sh --deploy -d yourdomain.com --deploy-hook synology_dsm
计划频率:设置为 每 60 天执行一次(Let's Encrypt 证书有效期为 90 天)。
我的部署脚本如下
export Ali_Key="LTaAI5dtMdkce6dq-YOURS"
export Ali_Secret="CgReLdn1epVed7FXb6cd-YOURS"
export SYNO_Username="adminHaha"
export SYNO_Password="admin123"
export SYNO_Port="5000"
ACME_DIR=/volume1/JimNas/acme/
LOG_PATH=$ACME_DIR/`date '+%Y%m%d_%H%M%S'`.log
cd ${ACME_DIR}/acme.sh
./acme.sh --issue --dns dns_ali -d f.h89.cn --server letsencrypt >> $LOG_PATH
./acme.sh --deploy -d f.h89.cn --deploy-hook synology_dsm >> $LOG_PATH
注意事项
- 权限问题:若脚本执行失败,检查 SYNO_Username 和 SYNO_Password 是否匹配,或临时关闭两步验证。
- 证书覆盖:默认会替换群晖的默认证书,若需保留多证书,需修改 SYNO_Certificate 参数指定证书描述名。
- 日志排查:任务计划可添加 >> /volume1/scripts/acme.log 2>&1 记录执行日志。
通过以上步骤,无需 Docker 即可实现 SSL 证书的自动申请、部署和续期。如需更详细参数说明,可参考 acme.sh 官方文档 。
参考文档
https://github.com/acmesh-official/acme.sh/wiki/Install-in-China
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
https://www.n.cn/search/fd2de1a1bed8478a9e88105e8910c0ef
本文链接:群晖无docker使用acme.sh加Aliyun的DNS更新证书 - https://h89.cn/archives/343.html
版权声明:原创文章 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文链接和本声明。