全球主机交流论坛

标题: [开源]基于 acme.sh 的 SSL 证书分发服务,NAT 鸡的福音 [打印本页]

作者: 七夏浅笑    时间: 2022-3-8 17:50
标题: [开源]基于 acme.sh 的 SSL 证书分发服务,NAT 鸡的福音
一个小工具而已,开始写来打算自己用的,已开源,如果大家用的上的话,骗个 star~

服务器比较多的可以用来更方便的在每台服务器上部署和自动更新免费通配符证书了(特别是 NAT 鸡),基于 acme.sh

原理的话教程里面有提到,没多少含金量,但好使 (*^▽^*)

开源地址(内附简明教程):https://github.com/julydate/acmeDeliver

教程:使用 acme.sh 部署通配符证书申请与分发服务 (https://www.julydate.com/post/462996681/)

按教程把服务端部署一次之后,所有客户端只需要像下面这样三行命令就能把证书同步过来,基本无需安装其它东西

  1. curl -sLo /root/acmeDeliverClient.sh https://raw.githubusercontent.com/julydate/acmeDeliver/client/client.sh
  2. chmod +x /root/acmeDeliverClient.sh
  3. /root/acmeDeliverClient.sh  -d "example.com" -p "password" -s "http://233.233.233.233:9929" -c "0"
复制代码


然后设置 crontab 定期执行一下就能一直不用管了

其实 NAT 鸡部署证书也能直接用 acme.sh,但是总觉得每次新开一台机器就要敲一堆命令去安装脚本,还要每次去找 DNS API 上面的 Token 粘贴进去,小鸡多了之后把 Token 放的到处都是总觉得也不舒服,另外申请证书的 API 调用次数应该也是有限制的,不过一般不容易达到,还有就是应该能更方便的支持 windows,等一个有缘人做个 windows 的客户端,我暂时懒得弄了,毕竟不是专门做开发的(才不是因为我不会

反正使用之后就能更方便安全的在各种 NAT 机,IPv6 机和没有公网 IP 的机器上同步 SSL 证书
另外服务端有其它的用法的话,自己探索吧~
作者: diocat    时间: 2022-3-8 17:59
我是放在https目录下,用ssh批量执行curl直接拉下来
作者: zxxx    时间: 2022-3-8 18:03
谢谢大佬分享!
作者: iversonlive    时间: 2022-3-8 18:04
一直都手动复制粘贴的漂过
作者: 七夏浅笑    时间: 2022-3-8 18:05
diocat 发表于 2022-3-8 17:59
我是放在https目录下,用ssh批量执行curl直接拉下来

嗯嗯,原理差不多也是这样,不过加了密码
作者: 七夏浅笑    时间: 2022-3-8 18:17
iversonlive 发表于 2022-3-8 18:04
一直都手动复制粘贴的漂过

就是多了之后每次更新都累死了,然后经常证书过期了都不知道,然后哪天突然发现某个服务崩了还不知道为啥,一查日志
SSL certificate problem

〒▽〒
作者: kezhao    时间: 2022-3-8 18:20
学习了。看看怎么样
作者: zhongziso    时间: 2022-3-8 18:21
学习一下
作者: Showfom    时间: 2022-3-8 18:25
你的教程需要更正下

  1. ZeroSSL 需要注册而且不支持签发 ECC 证书
复制代码


已经支持了,我都用了好久他们的 ECC 证书了
作者: 七夏浅笑    时间: 2022-3-8 18:28
Showfom 发表于 2022-3-8 18:25
你的教程需要更正下

哦哦,好诶~
作者: iks    时间: 2022-3-8 18:49
不错,之前一直有这个想法,可惜对我自己来讲比较繁琐+应用价值不高所以没搞。既然楼主已经造好了轮子那不如好好享受一番
作者: 七夏浅笑    时间: 2022-3-8 19:16
iks 发表于 2022-3-8 18:49
不错,之前一直有这个想法,可惜对我自己来讲比较繁琐+应用价值不高所以没搞。既然楼主已经造好了轮子那不 ...

诶嘿~我也是找了一圈发现没有合适的,才自己弄了一个
作者: swds    时间: 2022-3-8 19:18
本帖最后由 swds 于 2022-3-8 19:22 编辑

我有个vps申请所有证书,然后定时scp同步到各个小鸡
windows 靠syncthing同步。不过非常郁闷的是win不支持文件名*号,所以没能同步通配符证书
作者: 七夏浅笑    时间: 2022-3-8 19:25
swds 发表于 2022-3-8 19:18
我有个vps申请所有证书,然后定时scp同步到各个小鸡
windows 靠syncthing同步。不过非常郁闷的是win不支持 ...

嗯嗯,之前也看过这个方法,然后想到每个小鸡都能登陆那台申请证书服务端的 ssh 就放弃了,不过如果单独拿一台服务器只用来申请和存放证书的话就还不错
作者: jieky    时间: 2022-3-8 19:26
swds 发表于 2022-3-8 19:18
我有个vps申请所有证书,然后定时scp同步到各个小鸡
windows 靠syncthing同步。不过非常郁闷的是win不支持 ...

可以生成后改名再同步
作者: swds    时间: 2022-3-8 19:50
jieky 发表于 2022-3-8 19:26
可以生成后改名再同步

好主意,我试试看
作者: dunce    时间: 2022-3-8 19:50
我嗅到了二次猿的气息
作者: dunce    时间: 2022-3-8 19:52
话说有考虑用cf workers做服务端吗,这样就不需要中心服务器了
作者: 七夏浅笑    时间: 2022-3-8 21:40
dunce 发表于 2022-3-8 19:50
我嗅到了二次猿的气息

二次元多好,来个三连吧 OvO
作者: aliyunyun    时间: 2022-3-8 22:50
真不错
作者: 疯狂痴呆    时间: 2022-3-8 23:04
搞不懂,续发证书的时候不是要验证域名吗,我一般是FILE验证。这样~~~~~~~~~
作者: march_chen    时间: 2022-3-8 23:06
谢谢大佬分享!
作者: 七夏浅笑    时间: 2022-3-9 00:10
疯狂痴呆 发表于 2022-3-8 23:04
搞不懂,续发证书的时候不是要验证域名吗,我一般是FILE验证。这样~~~~~~~~~ ...

用 DNS API 验证,续发的时候还是自动调用 DNS API,用这个的话只需要服务端对接 DNS API 去续就行了
作者: lisa1937    时间: 2022-3-9 00:21
其实一台弄出泛域名后,可以用h5ai or caddy文件服务弄出直链,
其他机器crontab 1个月定时wget即可
作者: 七夏浅笑    时间: 2022-3-9 01:15
lisa1937 发表于 2022-3-9 00:21
其实一台弄出泛域名后,可以用h5ai or caddy文件服务弄出直链,
其他机器crontab 1个月定时wget即可 ...

教程里倒是有提到过,不过就是怕被别人下到,毕竟通配符证书
作者: deepflow    时间: 2022-4-3 20:28
支持无私分享。
作者: zhuer456789    时间: 2022-4-3 20:58
我现在用caddy+dnspod模块自动申请ssl,这样不需要对外开放http端口,caddy反向代理还是很方便
作者: woputby    时间: 2022-4-3 21:14
没懂啊,例如我有3只小鸡,每只小鸡搭配了一个不同的域名,那这种怎么分发证书啊,域名不一样会报错吧
作者: misakano    时间: 2022-4-3 21:19
mark
作者: 啥都不会    时间: 2022-4-3 21:33
woputby 发表于 2022-4-3 21:14
没懂啊,例如我有3只小鸡,每只小鸡搭配了一个不同的域名,那这种怎么分发证书啊,域名不一样会报错吧 ...

不同子域名的话可以,通配符
作者: woputby    时间: 2022-4-3 22:12
啥都不会 发表于 2022-4-3 21:33
不同子域名的话可以,通配符

就是说a.com,b.com,c.com这种不行,1.a.com,2.a.com这种行是吗?大佬
作者: hcyme    时间: 2022-4-3 22:14
一直都是自签证的,梯子够用了
作者: 七夏浅笑    时间: 2022-4-4 16:08
woputby 发表于 2022-4-3 22:12
就是说a.com,b.com,c.com这种不行,1.a.com,2.a.com这种行是吗?大佬

是呀,*.a.com  的通配符,就可以匹配 1.a.com  2.a.com  3.a.com 这些
作者: 七夏浅笑    时间: 2022-4-4 16:09
hcyme 发表于 2022-4-3 22:14
一直都是自签证的,梯子够用了

但是客户端不锁 CA 的话会不太安全吧
作者: 空灵心梦    时间: 2022-4-4 16:42
支持开源大佬,之前我都是把cf的key放在记事本上,acme手动撸
作者: 七夏浅笑    时间: 2022-4-4 16:45
空灵心梦 发表于 2022-4-4 16:42
支持开源大佬,之前我都是把cf的key放在记事本上,acme手动撸

哈哈哈,就差个一键脚本了,可惜我也有点懒得弄
作者: lilarcor    时间: 2022-4-4 17:45
感谢分享
作者: woputby    时间: 2022-4-4 19:14
七夏浅笑 发表于 2022-4-4 16:08
是呀,*.a.com  的通配符,就可以匹配 1.a.com  2.a.com  3.a.com 这些

大佬博客文章质量很高,怎么可以第一时间看博客有没有更新啊
作者: 若白    时间: 2022-4-4 19:20
我不理解...

一台机器acme, 然后rsync推送到其他所有机器, 既然都能rsync了, 那在ssh过去重启下web服务端, 就完事了...

写脚本不超过10行...
作者: 七夏浅笑    时间: 2022-4-4 19:40
若白 发表于 2022-4-4 19:20
我不理解...

一台机器acme, 然后rsync推送到其他所有机器, 既然都能rsync了, 那在ssh过去重启下web服务端, ...

是呀,其实如果不介意 ssh 私钥或者密码在每台客户端上放一个的话,怎么弄都行,就像文章里也提到过,直接 Python 起一个 HTTP server 再加个 basic authentication 也不是不可以哒
作者: 七夏浅笑    时间: 2022-4-4 19:42
woputby 发表于 2022-4-4 19:14
大佬博客文章质量很高,怎么可以第一时间看博客有没有更新啊

啊...博客倒是有 RSS,不过我很懒的,常年摸鱼的
https://www.julydate.com/atom.xml
作者: starlove_i    时间: 2022-4-4 20:01
七夏姐姐也在loc玩啊
作者: 小穴儿    时间: 2022-4-4 21:59
打包个docker??
作者: 七夏浅笑    时间: 2022-4-4 22:01
starlove_i 发表于 2022-4-4 20:01
七夏姐姐也在loc玩啊

好几年了呜呜
作者: 七夏浅笑    时间: 2022-4-4 22:05
小穴儿 发表于 2022-4-4 21:59
打包个docker??

大佬,靠你了~(星星眼)
嘛,之前主要是嫌 acme.sh 更新麻烦,但是突然想到 acme.sh 会自己更新,等我有空了再咕一个吧
作者: starlove_i    时间: 2022-4-4 22:19
七夏浅笑 发表于 2022-4-4 22:01
好几年了呜呜

呜呜看到了, 原来你是个大神
作者: 七夏浅笑    时间: 2022-4-4 23:33
starlove_i 发表于 2022-4-4 22:19
呜呜看到了, 原来你是个大神

啊啊?我不是啊!别瞎说!
作者: 丶Silently    时间: 2022-4-5 00:05
收藏了。早上醒来再弄
作者: 小穴儿    时间: 2022-4-5 12:43
七夏浅笑 发表于 2022-4-4 22:05
大佬,靠你了~(星星眼)
嘛,之前主要是嫌 acme.sh 更新麻烦,但是突然想到 acme.sh 会自己更新,等我有 ...

等大佬的docker、、、
作者: 七夏浅笑    时间: 2022-4-5 19:49
小穴儿 发表于 2022-4-5 12:43
等大佬的docker、、、

我已经被贴上鸽子的标签了呜呜呜
作者: sdlyjcl    时间: 2022-4-5 19:51
强强强
作者: 丶Silently    时间: 2022-4-5 20:11
用上了、加了定时 自动mv移动过nginx目录
作者: 七夏浅笑    时间: 2022-4-5 20:16
丶Silently 发表于 2022-4-5 20:11
用上了、加了定时 自动mv移动过nginx目录

嗯嗯,客户端脚本其实也支持证书更新之后自动调用 reloadcmd 的,不过我教程没写,在脚本前几行就有
作者: fps    时间: 2022-4-6 00:34
支持无私分享
作者: 坏鱼炒年糕    时间: 2022-4-11 00:55
在群辉上部署客户端 不知道是不是openssl安装有问题,客户端不能通过https连接服务端,返回一直是000……用http就好了
作者: 生如风絮    时间: 2022-4-11 01:02
坏鱼炒年糕 发表于 2022-4-11 00:55
在群辉上部署客户端 不知道是不是openssl安装有问题,客户端不能通过https连接服务端,返回一直是000 ...

有可能是群晖自带的openssl版本比较老,6.2.3版本wget下载https链接都报tls握手失败




欢迎光临 全球主机交流论坛 (https://ddzzz.eu.org/) Powered by Discuz! X3.4