网上找了好多泛域名续签教程,要么一键续签的脚本,要么教程很久了,于是开始自娱自乐吧。

注:此篇文章非保姆类教程,也非一键续签脚本,安全无毒(并不保证,狗头),只是对群晖通过docker进行自动续签的说明,并且只对2021年6月23日到本文发布这一时间有效,其他时间请参考acmesh的github,否则不保证能用。很多内容我只讲大概,有不懂百度或留言。文章有不足或有遗漏或有问题,大家踊跃指出,谢谢!

参考出处(抄作业了):

img

以上出处有冒犯侵删

前提:1.群晖 2.有公网ip或其他 3.域名(我是阿里的域名,其他的自己对照acmesh官方github搜索)

泛域名+反向代理实现效果:这里就不贴大段文字了,直接上图显示效果。来源打码的是我的域名,也就是 http://abc.com(举个例子不是真实域名)

img

实现效果如图,http://pve.abc.com(假设http://abc.com是我的域名)不用带端口号

img

或者http://qb.abc.com一样不带端口号

img

泛域名证书的效果就是chrome浏览器没有提示不安全,这里指的是,你随便加个前缀.http://abc.com,换个意思就是http://aaa.abc.comhttp://bbb.abc.com 都是带小锁的,自动续签是因为免费的泛域名证书CA letsencrypt就90天期限。之前用的阿里云证书,期限1年也免费,但不是泛域名证书。

群晖的反向代理有几个小问题,大家一般碰不到,但是就我这个奇葩会,有条件的还是在软路由端设置反代吧,这里不展开讲了。

实操过程:

群晖docker注册表搜acme,并安装

img

容器设置如下,

img

点高级设置

img

网络,使用与Docker Host 相同的网络

img

命令,输入daemon

img

记得在docker文件夹下的acme.sh添加account.conf配置文件,内容:

1
2
3
4
5
export DP_Id="xxxxx" 

export DP_Key="xxxxxxxxxxxxxxxxxxxx"

AUTO_UPGRADE='1'

img

这是阿里云的设置,其他的参考docker容器说明设置或acme的github的dnsapi

img

img

到这一步都是参考网上的教程了,接下来我会重点说几个注意的地方

申请证书:因为每个人都是不一样的所以请参考acme的github

我这边是通过群晖acme的docker申请的阿里云域名证书

或大家自行用linux申请

进容器点详情,新增通过命令启动

img

img

输入以下命令申请证书

1
acme.sh --issue --dns dns_dp -d sjkhsl.fun -d *.sjkhsl.fun --server letsencrypt

没什么问题的话在docker acme.sh文件夹下能看见有一个abc的文件夹里就有签好的证书了。

重点来了:

6月23号这一天,我看acme的github网址上写了默认CA是zerossl(7月5号,我看改成了letsencrypt),于是那天我按照之前网上的命令输入都不行,后面上github看才发现这个问题。所以大家在申请证书还是带上这个参数吧 –server letsencrypt

img

接下来也算重点,把申请好的证书在群晖配置好,这步我就略过了,没什么要注意的。为什么是重点,因为在群晖计划任务里的自动续签有用到。

img

自动续签:

以上步骤完成后,就是自动续签了,具体我也不细讲了,贴图和代码吧

img

1
2
3
4
5
6
7
8
9
10
11
12
13
docker exec acme acme.sh --issue --force -d sjkhsl.fun -d '*.sjkhsl.fun' --dns dns_dp --server letsencrypt

sleep 2m

rsync -avh "/volume1/docker/acme/sjkhsl.fun/sjkhsl.fun.cer" "/usr/syno/etc/certificate/_archive/SV4oQE/cert.pem"

rsync -avh "/volume1/docker/acme/sjkhsl.fun/sjkhsl.fun.key" "/usr/syno/etc/certificate/_archive/SV4oQE/privkey.pem"

rsync -avh "/volume1/docker/acme/sjkhsl.fun/fullchain.cer" "/usr/syno/etc/certificate/_archive/SV4oQE/fullchain.pem"

rsync -avh "/volume1/docker/acme/sjkhsl.fun/ca.cer" "/usr/syno/etc/certificate/_archive/SV4oQE/chain.pem"

/usr/syno/etc/rc.sysv/nginx.sh reload

注意事项,docker容器acme申请的证书放在哪个文件夹请自行对照修改代码,关于/usr/syno/etc/certificate/_archive/SV4oQE里的SV4oQE(每个人文件夹名字不一样,自行判断)这个文件夹特别说明,这个文件夹就是刚刚在群晖配置的刚申请好的证书,如果没有配置这一步,_archive这个文件夹下只有一个文件夹就是群晖自带的,如果你之前没有配置其他证书的话。为什么要先做配置那一步,因为你不想把群晖自带的证书给替换掉吧?

以上,没了,有错误和问题不足欢迎指正,马上修改。