群晖自动更新 Let’s Encrypt 证书

废话不说,纯技术贴,什么是acme.sh,什么是let’s encrypt请自行百度或谷歌。

1. 安装准备

官方文档:https://github.com/acmesh-official/acme.sh
中文说明:https://github.com/acmesh-official/acme.sh/wiki/说明

说明:为避免cron执行权限问题, 务必直接使用root账户安装

2. 开始安装

git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
# 不需要定时更新证书,后期全手动更新
./acme.sh --install --nocron
# 开启自动更新
./acme.sh --upgrade --auto-upgrade
# 证书设置为 Let’s Encrypt 证书
./acme.sh --set-default-ca  --server  letsencrypt

3. 编写脚本

申请证书的脚本 creat.sh

# 设置申请证书类型为 Let's Encrypt
/volume1/Application/acme.sh/acme.sh --set-default-ca  --server  letsencrypt
# DNSPod Token
export DP_Id="xxxxx"
export DP_Key="xxxxx"
# 依次申请多个证书 

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --issue --dns dns_dp -d example1.com -d *.example1.com


/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --issue --dns dns_dp -d example2.com -d *.example2.com

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --issue --dns dns_dp -d example3.com -d *.example3.com 

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --issue --dns dns_dp -d example4.com -d *.example4.com

exit 0

续签证书的脚本 cacerts_renew.sh

# /volume1/Application/acme.sh/acme.sh --set-default-ca  --server  letsencrypt
# DNSPod Token
# export DP_Id="xxxxx"
# export DP_Key="xxxxx"
# 依次续签多个证书 

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --renew -d example1.com -d *.example1.com --force
/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --renew -d example2.com -d *.example2.com --force
/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --renew -d example3.com -d *.example3.com  --force
/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts" --renew -d example4.com -d *.example4.com --force

exit 0

4. 编写安装证书的脚本

  • 首次可运行 creat.sh 申请证书,证书将保存在 /volume1/Application/cacerts 目录下。
  • 首次安装证书需要进入群晖证书管理界面,手动安装证书。
  • 登录群晖ssh后台,root 权限运行 cat /usr/syno/etc/certificate/_archive/INFO 查询对应证书目录。
  • olm1ZX 对应 example1.com 证书目录、如 qqxlOi 对应 example2.com 证书目录 …
  • 根据对应目录,编写证书替换脚本,用 cacerts_renew.sh 续签的证书替换已经安装的证书,并重启服务。

安装证书的脚本 cacerts_installcert.sh

# 依次安装多个证书 

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts/" --installcert -d example1.com -d *.example1.com --certpath /usr/syno/etc/certificate/_archive/olm1ZX/cert.pem --keypath /usr/syno/etc/certificate/_archive/olm1ZX/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/olm1ZX/fullchain.pem --capath /usr/syno/etc/certificate/_archive/olm1ZX/chain.pem --reloadcmd

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts/" --installcert -d example2.com -d *.example2.com --certpath /usr/syno/etc/certificate/_archive/qqxlOi/cert.pem --keypath /usr/syno/etc/certificate/_archive/qqxlOi/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/qqxlOi/fullchain.pem --capath /usr/syno/etc/certificate/_archive/qqxlOi/chain.pem --reloadcmd

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts/" --installcert -d example3.com -d *.example3.com --certpath /usr/syno/etc/certificate/_archive/6ZGuv2/cert.pem --keypath /usr/syno/etc/certificate/_archive/6ZGuv2/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/6ZGuv2/fullchain.pem --capath /usr/syno/etc/certificate/_archive/6ZGuv2/chain.pem --reloadcmd

/volume1/Application/acme.sh/acme.sh --home "/volume1/Application/cacerts/" --installcert -d example4.com -d *.example4.com --certpath /usr/syno/etc/certificate/_archive/gPgiqX/cert.pem --keypath /usr/syno/etc/certificate/_archive/gPgiqX/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/gPgiqX/fullchain.pem --capath /usr/syno/etc/certificate/_archive/gPgiqX/chain.pem --reloadcmd


# 将 example1.com 设置为默认证书
rsync -avzh /usr/syno/etc/certificate/_archive/olm1ZX/ /usr/syno/etc/certificate/system/default/

sudo nginx -s reload

exit 0

5. 设置自动续签任务

  • 在群晖中添加任务计划 cacerts_renew,权限设置为 root
  • 用户自定义脚本
/volume1/Application/cacerts/cacerts_renew.sh >> /volume1/Application/cacerts/cacerts_renew_log.txt 2>&1
  • 计划设置为,在以下日期运行,每月重复,首次运行事件00:00,每天
群晖自动更新 Let’s Encrypt 证书
  • 在群晖中添加任务计划 cacerts_installcert,权限设置为 root
  • 用户自定义脚本
/volume1/Application/cacerts/cacerts_installcert.sh >> /volume1/Application/cacerts/cacerts_installcert_log.txt 2>&1
  • 计划设置为,在以下日期运行,每月重复,首次运行事件01:00,每天
  • cacerts_installcert 任务的运行必须在 cacerts_renew运行之后一段时间,否则无效。
群晖自动更新 Let’s Encrypt 证书
  • 需要注意的是刚申请的证书可能在当天无法续签,可以在一周或一月后进行续签测试。
@版权声明 1 本站名称:Liuwei's Blog
2 本站网址:https://www.liuwei.vin
3 本站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
5 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
6 本站所有内容,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
个人网站群晖

LskyPro使用Picgo上传图片

2023-1-5 18:28:15

个人网站群晖

群晖安装LskyPro企业版图床

2023-1-5 18:10:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索