群晖7.2使用ACME.SH更新SSL证书 双重认证 泛域名 DNSPOD
起因
letsencrypt的SSL证书只有三个月有效期,相信大家的nas也都使用了SSL证书,来开启HTTPS。三个月的有效期每次手动申请手动上传很麻烦,因此不断百度发现使用acme.sh 配合群晖的任务计划能够自动更新证书。
可能张大妈已经有了同类型的,但我认为我的那个垃圾脚本可能要方便一点(只是可能)
开了双重验证登录的也可以使用
过程
1、群晖打开container manager 搜索acme下载第一个|或者使用Xshell等工具连接SSH 使用以下命令拉去镜像docker pull neilpang/acme.sh
群晖7.2的注册表勉强能用,建议还是使用命令拉取2、运行acme.sh镜像 docker名一定要是acme不然后面的垃圾脚本可能你要自己更改。

映射目录,随你怎么放。3、网络选择HOST 执行命令中填写daemon
注意执行命令和网络
成功运行就行4、现在开始写一个脚本并添加到群晖的任务计划中执行
垃圾代码,建议放到上面所映射的目录,文件名为acme.sh#你的域名
DOMAIN=''
#证书供应商
CERT_SERVER='letsencrypt'
#DNS供应商 可选 dns_dp(腾讯云) dns_ali(阿里云) dns_cf 其他可查https://github.com/acmesh-official/acme.sh/wiki/dnsapi
DNS="dns_dp"
#群晖账号密码
SYNO_Username=''
SYNO_Password=''
#如果开启了双重验证请在浏览器登录时选中保存此设备,然后从COOKIE中获取did cookie
SYNO_Device_Name="CertRenewal"
SYNO_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=''
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
5、将脚本命名为acme.sh并上传到群晖,最好是上面所映射的目录中,并在群晖添加任务计划。
root!!!

双重认证
如果你的群晖开启了双重认证一定要把did填入脚本中,以下为怎么获取did
1、一定要勾选箭头所指
一定要勾选箭头所指2、按F12打开开发者模式,然后找如图所示

3、将获取的did填入这里!

结果

总结
弄这个的原因主要是网络上的教程,不知道怎么回事我怎么弄都不行,然后就自己弄了以下,其实都大差不差。
希望大家能喜欢。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
log:
invalid domain
Error add txt for domain
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
[Tue Sep 17 07:27:29 UTC 2024] Your cert key is in: /acme.sh/hundun.online_ecc/hundun.online.key
[Tue Sep 17 07:27:29 UTC 2024] The intermediate CA cert is in: /acme.sh/hundun.online_ecc/ca.cer
[Tue Sep 17 07:27:29 UTC 2024] And the full-chain cert is in: /acme.sh/hundun.online_ecc/fullchain.cer
[Tue Sep 17 07:27:30 UTC 2024] The domain 'hundun.online' seems to already have an ECC cert, let's use it.
[Tue Sep 17 07:27:31 UTC 2024] Logging into localhost:5000...
[Tue Sep 17 07:27:33 UTC 2024] Getting certificates in Synology DSM...
[Tue Sep 17 07:27:34 UTC 2024] Unable to find certificate: hundun.online and is not set.
[Tue Sep 17 07:27:34 UTC 2024] Error deploying for domain: hundun.online
[Tue Sep 17 07:27:34 UTC 2024] Error encountered while deploying.
这最后一步报错,是不是因为
#要添加的证书的名字,空字符串("")的话就是替代默认证书,一般建议使用空字符串,除非你有多个证书
SYNO_Certificate='hundun.online'
这一行写了数值
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
[Mon Feb 19 06:39:47 UTC 2024] Unable to find certificate: & $SYNO_Create is not set
报的这个错误。搞不定啊
校验提示文案
校验提示文案
/volume3/docker/acme.sh/acme.sh: line 17: $'\r': command not found
/volume3/docker/acme.sh/acme.sh: line 18: $'\r': command not found
/volume3/docker/acme.sh/acme.sh: line 29: $'\r': command not found
/volume3/docker/acme.sh/acme.sh: line 30: $'\r': command not found
/volume3/docker/acme.sh/acme.sh: line 31: $'\r': command not found
/volume3/docker/acme.sh/acme.sh: line 32: syntax error near unexpected token `newline'
/volume3/docker/acme.sh/acme.sh: line 32: `case $DNS in
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
log:
invalid domain
Error add txt for domain
校验提示文案