NAS群晖威联通:如何实现域名证书的自动更新?acme.sh
以前使用阿里云或腾讯云的免费 SSL 证书时,虽然只能针对单个域名申请,但有效期还有一年,使用起来勉强够用。现在却变成了 90 天的有效期,不仅缩短了使用时间,还需要频繁手动更新,实在是让人感到麻烦。
查阅了大量资料,包括官方文档后,最终选择了最简单、高效的方式来解决 SSL 证书的问题:通过 群晖自带的Docker 安装 acme.sh,实现自动化更新和部署证书。这种方式不仅方便,还保持了环境的整洁,非常适合长期使用。
acme.sh官方中文文档地址:https://github.com/acmesh-official/acme.sh/wiki/说明 感兴趣的可以看看。
前提 1
有一个域名,可以免费申请一个,比如免费域名us.kg,申请地址:https://register.us.kg/
(不会的可以关注我,看我其他文章,会更新申请步骤,其实很简单)
前提 2
强烈建议把域名托管到cloudflare。使用cloudflare的dns。
cloudflare官方地址:https://www.cloudflare.com/
(一定要有一个cloudflare账号,阿里云腾讯云和这个相比弱爆了,而且域名统一管理)
有了cloudflare账号,域名也托管过去了,需要得到四个参数
1,CF_Token (api令牌) 2, CF_Zone_ID(zone id) 3,CF_Key (Global API Key)
4,cloudflare账号的邮箱 CF_Email 比如:xxx@outlook.com
下面是获取方式
1,cf_token 就是下图这里API令牌,获取您的api令牌(点击域名进入右下角就有这个选项)
获取api令牌
编辑区域dns这个选项

Copy下来保存起来,只显示一次,下次再想查看好像需要重新创建令牌Copy下来保存起来(40位)接下来就会用到,可以先保存到桌面文件里,只显示一次,下次再想查看好像需要重新创建令牌
2,需要获取zone id 也就是 区域id

3.CF_Key:登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“Global API Key 查看”即可

接下来正式步入正题,通过群晖 NAS,利用 Docker 安装 acme.sh,实现 SSL 证书的自动更新与部署。这种方式操作简洁,自动化程度高,非常适合需要频繁更新证书的场景。
1、新建acme文件夹,后面容器映射需要用,可以和我一样在docker 下面新建一个命名为acme.sh的文件夹

2. 注册表搜索neilpang/acme.sh 下载镜像

3,最重要的步骤
安装acme.sh容器 容器名称请和我保持一致,acme-sh 中间不是.而是-
acme-sh

最终的结果,一定保持一致SYNO_Username: #群晖管理员账号
SYNO_Password:# 群晖管理员登录密码
SYNO_Certificate: "" #默认分号空格
SYNO Create:1 # 表示如果证书不存在,则创建该证书。(填域名)
CF_Token: #Cloudflare API Token
CF_Zone_ID: #Cloudflare区域ID
CF_Key: #Cloudflare Global API Key
CF_Email: #Cloudflare账号邮箱
往下拉 网络选择 host 命令填 daemon

最后点击完成运行容器

最后 由于免费证书的有效期为90天,因此需要每隔1至3个月重新申请一次证书以保持其有效性。这一过程我们通过脚本自动执行。
总共需要四个步骤如下:
1、在桌面新建一个文件然后复制下面代码 把us.kg换成你自己的域名命名为"AutoCert.sh"
#!/bin/bash
docker exec acme-sh acme.sh --force --log --issue --server letsencrypt --dns dns_cf --dnssleep 120 -d us.kg -d *.us.kg
docker exec acme-sh acme.sh --deploy -d us.kg -d *.us.kg --deploy-hook synology_dsm
PS:上面的代码第一段是申请证书,第二段是部署到群晖
2、将已保存的 "AutoCert.sh" 文件上传到群晖的docker文件夹中。

3、打开"控制面板"选择"任务计划",“新增”->“计划任务”->“用户定义的脚本”

常规选项卡中名称为AutoCert 账号为root
计划选项卡中每月执行
重要:在任务设置选项卡中,用户定义的脚步填
bash /volume1/docker/acme.sh/AutoCert.sh
>>/volume1/docker/acme.sh/log.txt 2>&1
ps:第一行是执行,第二行是错误记录在日志中,会自动创建log.txt文件
4、点击运行

如果运行没有问题那么docker文件夹下面会变成如下图


看到success代表部署成功了

查看群晖证书发现有一个新的证书被自动创建。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

候赛雷
校验提示文案
以浪得虚名
校验提示文案
阳光下的黑暗
校验提示文案
阳光下的黑暗
校验提示文案
候赛雷
校验提示文案
以浪得虚名
校验提示文案