1
EvineDeng 106 天前 1
|
2
zx9481 106 天前
|
3
zhaidoudou123 106 天前
😂我就是在每个 docker 弄个挂载目录到宿主机上来更新证书的,原来还可以有别的方法
|
4
bigbugbag OP @zhaidoudou123 当然,见文档 https://github.com/acmesh-official/acme.sh/wiki/deploy-to-docker-containers
但是目前只能向一个容器部署,比如我有两个容器都打上了标签 `--label=sh.acme.autoload.domain=example.com`,只有一个容器会被部署证书。 |
5
yy306525121 106 天前
CERTBOT 好像可以, 了解过但是没用过, 自己研究一下
|
6
yikyo 106 天前
|
7
yinmin 106 天前
你是在 docker 里运行 acme.sh 的吧。我的操作方式是 volume 挂接的方式,将证书目录同时挂接到 acme.sh 容器和证书使用容器。在宿主机的 crontab 里写一个定时任务运行 acme_update.sh 。
acme_update.sh 的流程是: (1) docker 运行 acme 更新证书,如果证书被更新会在 pending 目录里 touch 一个.sh 空文件做标记 (2) 宿主机检查 pending 目录是是否存在.sh 文件,如果有的话,运行在 prog 目录下的同名文件 (3) 删除 pending 目录下的.sh 文件 通过第二步,在证书更新后能 restart 对应容器或者让容器 reload 配置。因为是检查 pending 目录的文件,但是运行 prog 目录下的同名文件,prog 目录没有挂接到容器里,所以比较安全。 然后在宿主机上写一个 alias ,类似如下: alias acme.sh="docker run --rm -v /docker/acme/pending:/acme/pending -v /docker/acme/acme.sh:/acme.sh -v /var/cert:/var/cert neilpang/acme.sh" (文件认证模式需要加上 web 目录的 volume ,dns 认证第一次需要加上环境变量,之后可以删除掉) 将来使用的时候,就是直接 acme.sh 操作,使用也很方便。acme_update.sh 可以让 gpt/claude 写一下。 |
9
bigbugbag OP @yinmin 这种方式确实解决了问题,但是对宿主机有侵入性的操作,不太符合我的预期。
另外,有些服务确实没有重载证书的命令(比如 Traefik ),只能 restart 容器,这一步大概率要侵入宿主机,我还不知道有什么比较好的解决方式。 |
10
EvilYZ 106 天前
直接 Traefik ,https://doc.traefik.io/traefik/https/acme/
|
12
lesterholy 106 天前
所以你是需要个证书的分发程序?我是签好证书之后,传到七牛上,谁用谁自己去下,最后 nginx -s reload 不过我弄的泛域名证书
|
13
leiletter 106 天前
前几天装了 certd ,还可以。但是最新版升级了付费权益,我没有仔细看。似乎限制部署主机数量。OP 可以了解看看
|
14
EvilYZ 106 天前
#11 你后面的服务不是反代出去吗?
|
16
EvilYZ 106 天前
#15 可以看看这个满不满足你的需求 https://www.zctou.com/2061.html
|
18
bugfan 106 天前
https://www.i996.me/#/mine
这里面下面有一个简易的,直接通过 curl 拉证书 json,也可以直接下载到本地某个目录里。完事需要你自己-s reload 一下之类的。 签发方式简单但是另类 |
19
shengchao 105 天前
额.
caddy |
20
jqtmviyu 105 天前
lego + shell 脚本 + crontab.
go 编译的程序不用管运行时和依赖, 用起来太舒服了. |
21
NoInternet 105 天前
没有人提 certbot ,这个有什么问题吗?
|
22
ysc3839 105 天前 via Android
@NoInternet 依赖 Python ,太重了
|
23
huangzhiyia 105 天前
sudo docker run -it --rm --name certbot \
-v "/etc/letsencrypt:/etc/letsencrypt" \ -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \ certbot/certbot certonly |
24
yinmin 105 天前 via iPhone
|
25
Rocketer 105 天前 via iPhone
可是同样的证书为什么要各自续签呢?我都是弄个 hub 服务器,证书只在这个服务器上更新,然后各实例自己来 pull 。
其实 pull 的不只是证书,各种配置都是通过这种机制下发的,所有更改都只需要更新 hub 服务器。hub 自身也可以做主从,以防挂掉影响所有服务。 |
26
ratazzi 105 天前
我是自己写的,高度定制,简化版本,只支持 DNS 模式 ECC 证书,跑在 Cloudflare Workers 上,不需要自己维护服务器,因为多年的折腾发现没有一个主机我能长期维护,可以说依赖很重也可以说只依赖一个 curl
|
28
daisyfloor 105 天前
那只能是 Caddy 了
|
29
npe 105 天前 via iPhone
certbot
|