由于几个群晖本地证书到期了,所以搜索资料看看如何自动更新证书,但是这里面坑太多了,最重要的是没有指出二次验证该怎么写入,导致失败了很多次,所以参考各个文章总结出这些。其实有点不明白的是已经用npm申请了泛域名证书代理出去了,为啥本机有些端口还是必须用群晖本地证书才行,比如备份、webdav等。并且不是每项功能都能反向代理,有可能没注意方法吧。
前期很多准备工作就自己搜搜就不说了。第一准备阿里云或者腾讯云或者cf的key和secret,名字叫法不一样自己搜搜。先去共享文件夹docker里建一个acme.sh的文件夹。群晖现在docker改名为Container Manager了,所以现在一般部署我使用的是docker compose,举例yaml配置如下:

# 域名
DOMAIN=’你的域名’
# # DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,CloudFlare就是dns_cf
DNS=dns_dp
# DNS API 生效等待时间 值(单位:秒),一般120即可
# 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)
DNS_SLEEP=120
# 证书服务商,letsencrypt
CERT_SERVER=letsencrypt
generateCrtCommand=”acme.sh –force –log –issue –server ${CERT_SERVER} –dns ${DNS} –dnssleep ${DNS_SLEEP} -d “${DOMAIN}” -d “*.${DOMAIN}””
installCrtCommand=”acme.sh –deploy -d “${DOMAIN}” -d “*.${DOMAIN}” –deploy-hook synology_dsm”
docker exec acme-sh $generateCrtCommand
docker exec acme-sh $installCrtCommand


自动获取更新证书脚本:
打开群晖控制面板-任务计划-新增,账号选root。选了每月执行一次。
然后任务设置-运行命令,粘贴如下代码,视情况做修改:
bash /volume1/docker/acme.sh/cert.sh >> /volume1/docker/acme.sh/log.txt 2>&1
确定,就完工。
感想就是太折腾人了,使用了很多人的文章都不齐全,特别是开启二次验证后的获取值这里完全错的离谱,账号密码正确也会报错。还得证书都被限制更新,不过能测试出来也行,下面就是我改了account.conf,再运行后的结果,也会被自动加到群晖证书。

设置acme.sh的自动更新:打开已运行的acme.sh容器的终端机页面,点击“通过命令启动”,输入“sh”后点确定,然后输入以下命令实现自动更新:acme.sh –upgrade –auto-upgrade。
参考资料:
1.https://blog.csdn.net/u013102163/article/details/138233350
2.https://zhuanlan.zhihu.com/p/666800024
3.https://post.smzdm.com/p/ad9loq2p/p2/?sort_tab=hot/#comments



