利用acme.sh(docker)自动续签(群晖)ssl证书

参考链接:https://www.chiphell.com/forum.php?mod=viewthread&tid=2619716

0、File Station里docker目录下新建“acme.sh”文件夹

image

1、Container Manager注册表搜索acme,下载镜像(neilpang/acmd.sh)

image

1.1、下载好的映像上右击运行,名字改成acme(任意名称均可,后续要用到)

设置自动启动
image

1.2、存储空间设置 选择 第0步 新增的文件夹位置 /docker/acme.sh 旁边填: /acme.sh

image

1.3、网络选host,执行命令填:daemon 下一步,运行即可

image

2、修改脚本文件

/docker/acme.sh/acme.sh修改为以下内容

acme.sh 点击查看代码
#你的域名
DOMAIN='你的域名'
#证书供应商
CERT_SERVER='letsencrypt'
#DNS供应商 可选 dns_dp(腾讯云) dns_ali(阿里云)  dns_cf  其他可查https://github.com/acmesh-official/acme.sh/wiki/dnsapi
DNS="dns_ali"
#群晖账号密码
SYNO_Username='群晖账号'
SYNO_Password='群晖密码'
#如果开启了双重验证请在浏览器登录时选中保存此设备,然后从COOKIE中获取did cookie
SYNO_Device_Name="CertRenewal"
SYNO_DID='通过浏览器获取的did数值'
#以下群晖配置非必要不要更改
SYNO_Hostname="localhost" # Specify if not using on localhost
SYNO_Scheme="http"
SYNO_Port="5000"
#要添加的证书的名字,空字符串("")的话就是替代默认证书,一般建议使用空字符串,除非你有多个证书
SYNO_Certificate='' 

#以下三选一
#DNSPOD.CN 腾讯云
DP_Id=''
DP_Key=''
#阿里云
Ali_Key='阿里云的key'
Ali_Secret='阿里云的密钥'
#CF
CF_Key=''
CF_Email=''


case $DNS in 
    "dns_dp")
    a="DP_Id=${DP_Id}"&&b="DP_Key=${DP_Key}"
    ;;
    "dns_ali")
    a="Ali_Key=${Ali_Key}"&&b="Ali_Secret=${Ali_Secret}"
    ;;
    "dns_cf")
    a="CF_Key=${CF_Key}"&&b="CF_Email=${CF_Email}"
    ;;
esac
SYNOUsername="SYNO_Username=${SYNO_Username}"
SYNOPassword="SYNO_Password=${SYNO_Password}"
SYNODeviceID="SYNO_Device_ID=${SYNO_DID}"
SYNOHostname="SYNO_Hostname=${SYNO_Hostname}"
SYNOScheme="SYNO_Scheme=${SYNO_Scheme}"
SYNOPort="SYNO_Port=${SYNO_Port}"
SYNOCertificate="SYNO_Certificate=${SYNO_Certificate}"
SYNODID="SYNO_DID=${SYNO_DID}"
SYNODeviceName="SYNO_Device_Name=${SYNO_Device_Name}"



docker exec -e ${a} -e ${b} acme acme.sh --log --server "${CERT_SERVER}" --issue -d "${DOMAIN}" -d "*.${DOMAIN}" --dns "${DNS}" >> /volume1/docker/acme.sh/log.txt 2>&1
docker exec -e ${SYNOUsername} -e ${SYNOPassword} -e ${SYNODeviceID} -e ${SYNOHostname} -e ${SYNOScheme} -e ${SYNOPort} -e ${SYNOCertificate} -e ${SYNODID} -e ${SYNODeviceName} acme acme.sh --issue -d "${DOMAIN}" -d "*.${DOMAIN}" --dns "${DNS}" --deploy --deploy-hook synology_dsm  >> /volume1/docker/acme.sh/log.txt 2>&1

注意,红框中容器名称要改成对应的名称
image

如群晖开启了双重验证,需要先获取did值,保持DSM网页未登录状态,登录时勾选“在此设备上不再询问”
image
键盘上按F12,在图中对应位置,获得did值,复制,填入上面acme.sh文件中对应位置“SYNO_DID='通过浏览器获取的did数值'”,保存即可
image

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

image
名称自定义,用户账号务必选 root
image
用户定义的脚本填入以下代码
`

bash /volume1/docker/acme.sh/acme.sh >> /volume1/docker/acme.sh/log.txt 2>&1

`
image
按照自己的计划,可以设置每月重复。
image
运行一次,查看运行结果,不报错即可
image
此时可以看到 /docker/acme.sh 目录下多了一个 log.txt 的文档,查看一下,末尾是“Success”即代表成功
image
再到 控制面板 安全性 证书 这里 将 刚生成的ECC 这个证书 设为默认
image

posted @ 2026-07-02 22:23  阳仔真的很忙  阅读(2)  评论(0)    收藏  举报