NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

2024-12-05 15:07:43 4点赞 45收藏 6评论

以前使用阿里云或腾讯云的免费 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令牌获取api令牌编辑区域dns这个选项编辑区域dns这个选项NAS群晖威联通:如何实现域名证书的自动更新?acme.shNAS群晖威联通:如何实现域名证书的自动更新?acme.shCopy下来保存起来,只显示一次,下次再想查看好像需要重新创建令牌Copy下来保存起来,只显示一次,下次再想查看好像需要重新创建令牌

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

2,需要获取zone id 也就是 区域idNAS群晖威联通:如何实现域名证书的自动更新?acme.sh

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

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

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

接下来正式步入正题,通过群晖 NAS,利用 Docker 安装 acme.sh,实现 SSL 证书的自动更新与部署。这种方式操作简洁,自动化程度高,非常适合需要频繁更新证书的场景。

1、新建acme文件夹,后面容器映射需要用,可以和我一样在docker 下面新建一个命名为acme.sh的文件夹

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

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

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

3,最重要的步骤

安装acme.sh容器 容器名称请和我保持一致,acme-sh 中间不是.而是-

acme-shacme-shNAS群晖威联通:如何实现域名证书的自动更新?acme.shNAS群晖威联通:如何实现域名证书的自动更新?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

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

最后点击完成运行容器

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

最后 由于免费证书的有效期为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文件夹中。

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

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

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh常规选项卡中名称为AutoCert 账号为root常规选项卡中名称为AutoCert 账号为root计划选项卡中每月执行计划选项卡中每月执行NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

重要:在任务设置选项卡中,用户定义的脚步填

bash /volume1/docker/acme.sh/AutoCert.sh

>>/volume1/docker/acme.sh/log.txt 2>&1
ps:第一行是执行,第二行是错误记录在日志中,会自动创建log.txt文件

4、点击运行

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

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

NAS群晖威联通:如何实现域名证书的自动更新?acme.shNAS群晖威联通:如何实现域名证书的自动更新?acme.sh

看到success代表部署成功了

NAS群晖威联通:如何实现域名证书的自动更新?acme.sh

查看群晖证书发现有一个新的证书被自动创建。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
6评论

  • 精彩
  • 最新
  • 阿里云域名也可以用这个更新吗?

    校验提示文案

    提交
    可以的,但是不推荐。

    校验提示文案

    提交
    收起所有回复
  • lucky 多简单

    校验提示文案

    提交
    lucky无法替换群晖默认证书

    校验提示文案

    提交
    收起所有回复
  • 完全一样的操作,为什么申请证书没问题,部署不成功

    校验提示文案

    提交
    同样的问题,请问解决了吗?

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

程序简单化

非正常程序员 喜欢简单的生活,不喜欢复杂化。 致力于把编程简单化,白话文化 编程底层都是英文,英文有它的历史文化环境,如果硬生生的翻译过来会让人更加迷惑。 编程十几年把自己会的转化为白话文的方式记录下来供大家参考

关注 打赏
作者其他文章
最新文章 热门文章
目录
45
扫一下,分享更方便,购买更轻松