群晖+免费+泛域名证书+自动续签
网上找了好多泛域名续签教程,要么一键续签的脚本,要么教程很久了,于是开始自娱自乐吧。
注:此篇文章非保姆类教程,也非一键续签脚本,安全无毒(并不保证,狗头),只是对群晖通过docker进行自动续签的说明,并且只对2021年6月23日到本文发布这一时间有效,其他时间请参考acmesh的github,否则不保证能用。很多内容我只讲大概,有不懂百度或留言。文章有不足或有遗漏或有问题,大家踊跃指出,谢谢!
参考出处(抄作业了):
以上出处有冒犯侵删
前提:1.群晖 2.有公网ip或其他 3.域名(我是阿里的域名,其他的自己对照acmesh官方github搜索)
泛域名+反向代理实现效果:这里就不贴大段文字了,直接上图显示效果。来源打码的是我的域名,也就是 http://abc.com(举个例子不是真实域名)
实现效果如图,http://pve.abc.com(假设http://abc.com是我的域名)不用带端口号
或者http://qb.abc.com一样不带端口号
泛域名证书的效果就是chrome浏览器没有提示不安全,这里指的是,你随便加个前缀.http://abc.com,换个意思就是http://aaa.abc.com或http://bbb.abc.com 都是带小锁的,自动续签是因为免费的泛域名证书CA letsencrypt就90天期限。之前用的阿里云证书,期限1年也免费,但不是泛域名证书。
群晖的反向代理有几个小问题,大家一般碰不到,但是就我这个奇葩会,有条件的还是在软路由端设置反代吧,这里不展开讲了。
实操过程:
群晖docker注册表搜acme,并安装
容器设置如下,
点高级设置
网络,使用与Docker Host 相同的网络
命令,输入daemon
记得在docker文件夹下的acme.sh添加account.conf配置文件,内容:
1 | export DP_Id="xxxxx" |
这是阿里云的设置,其他的参考docker容器说明设置或acme的github的dnsapi
到这一步都是参考网上的教程了,接下来我会重点说几个注意的地方
申请证书:因为每个人都是不一样的所以请参考acme的github
我这边是通过群晖acme的docker申请的阿里云域名证书
或大家自行用linux申请
进容器点详情,新增通过命令启动
输入以下命令申请证书
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
接下来也算重点,把申请好的证书在群晖配置好,这步我就略过了,没什么要注意的。为什么是重点,因为在群晖计划任务里的自动续签有用到。
自动续签:
以上步骤完成后,就是自动续签了,具体我也不细讲了,贴图和代码吧
1 | docker exec acme acme.sh --issue --force -d sjkhsl.fun -d '*.sjkhsl.fun' --dns dns_dp --server letsencrypt |
注意事项,docker容器acme申请的证书放在哪个文件夹请自行对照修改代码,关于/usr/syno/etc/certificate/_archive/SV4oQE里的SV4oQE(每个人文件夹名字不一样,自行判断)这个文件夹特别说明,这个文件夹就是刚刚在群晖配置的刚申请好的证书,如果没有配置这一步,_archive这个文件夹下只有一个文件夹就是群晖自带的,如果你之前没有配置其他证书的话。为什么要先做配置那一步,因为你不想把群晖自带的证书给替换掉吧?
以上,没了,有错误和问题不足欢迎指正,马上修改。