前言:群晖自带的证书更新没办法使用dns方式更新。现在常用的阿里云和腾讯云免费证书期限都变成90天了。提供能够在群晖上自动化实现定期从letsencrypt更新证书的方法。
1、方案是使用acme官方的docker项目,配合sh脚本执行生成证书并自动部署到群晖dsm上。
在群晖目录下新建该update_ssl.sh脚本
#! /bin/bash
#在群晖目录下新建该sh脚本。
export ACME_VOLUME=/volume1/docker/acme
export DOMAIN=你的域名
echo ">>>>>>> Ken: ==== SSL 更新开始 ===="
echo ">>>>>>> Ken: 1) 准备运行 acme.sh ..."
docker run --rm -itd \
-v "${ACME_VOLUME}":/acme.sh \
-e TZ=Asia/Shanghai \
--net=host \
--name=acme.sh \
neilpang/acme.sh daemon
echo ">>>>>>> Ken: 2) 生成证书"
# 下面的变量参数使用dns_api 中定义的即可,你自己域名是哪家的就用哪家的!
docker exec \
-e Tencent_SecretId="腾讯云密钥id" \
-e Tencent_SecretKey="腾讯云密钥key" \
acme.sh \
--issue --dns dns_tencent --dnssleep 60 -d "${DOMAIN}" -d "*.${DOMAIN}" --server letsencrypt
echo ">>>>>>> Ken: 3) 部署证书"
# 为了查看 SYNO_DID 这个 cookie 的内日,可在 Edge 浏览器打开这个页面(假设你的 NAS 登录地址是 192.168.1.200):
# edge://settings/cookies/detail?site=192.168.1.200
# SYNO_DID只有群晖开启了双认证的才需要。
docker exec \
-e SYNO_Username="群晖用户名" \
-e SYNO_Password="群晖密码" \
-e SYNO_Certificate="${DOMAIN}" \
-e SYNO_Create="1" \
-e SYNO_Scheme="https" \
-e SYNO_Port="5001" \
-e SYNO_DID="" \
acme.sh \
--deploy --insecure -d "${DOMAIN}" -d "*.${DOMAIN}" \
--deploy-hook synology_dsm
echo ">>>>>>> Ken: 正在停止 acme.sh"
docker stop acme.sh
echo ">>>>>>> Ken: #### SSL 更新结束 ####"
2、在群晖的任务计划下增加一个定时计划执行该脚本实现更新证书。
注意:脚本要使用root用户执行否则会没有权限。
执行的脚本:
bash /volume1/docker/acme/update_ssl.sh >>/volume1/docker/acme/log_acme/log.txt 2>&1
要查看执行日志在/volume1/docker/acme/log_acme/log.txt 文件中!
评论区