使用 ACME.sh 自动更新 Docker LEMP 的证书

Author Avatar
黎明余光 6月5日
  • 在其它设备中阅读本文章

当你用 ACME.sh 一把梭签完证书,配置自动更新时,才会想到文档中根本没写 issue 后怎么配置 renew-hook

今天下午给服务器换了 openSUSE,还是不要命的 Tumbleweed 版 ,顺便用上了 METO 的 LEMP 一键包,去掉了博客的 CDN,加上了 RSA & ECC 双证书 Let's Encrypt 让老子加密(Docker 真香

然后问题就来了,文档中只写了可以在 issue 时配置 renew-hook 并在每次 renew 操作后自动执行,但是他 并没有 告诉你已经签完了证书该怎么办...

改一改配置文件

ACME.sh 签发的每一张证书的配置文件一般是位于 ~/.acme.sh/[main domain][_ecc]/[main domain].conf,打开就可以很直接地看到几行 Hook 的配置了

...
Le_Webroot='dns_cf'
Le_PreHook=''
Le_PostHook=''
Le_RenewHook=''
Le_Keylength='ec-256'
...

RenewHook 直接改起来,比如

~/.acme.sh/acme.sh\
 --install-cert\
 -d [main domain]\
 --fullchain-file /fakepath/cert.cer\
 --key-file /fakepath/cert.key\
 && cd ~/docker-lemp\
 && docker-compose restart nginx

PS:在完整执行一次后,ACME.sh 会将 RenewHook 的内容使用 base64 编码,例如 __ACME_BASE64__START_[some base64-encoded content]__ACME_BASE64__END_
PPS:建议在 renew 时间最靠后的证书中重启容器

-EOF-

本文链接:https://blog.lim-light.com/archives/use-acme-sh-to-update-certificate-for-nginx-docker-container.html
本文采用 CC BY-NC-SA 3.0 CN 协议进行许可,阅读 相关说明