1. 背景
某些场景下,需要单独的证书文件,没法靠 caddy/nginx 等的插件自动申请。此时使用 certbot 就十分方便
certbot 可以单独运行,会有自动续期机制。另外也可以用 docker 容器化,这种情况下自动续期需要定期重启容器。
2. Docker-Compose 部署
下面是 docker-compose 的例子,使用 cloudflare api 做 DNS-01 challenge,申请 let’s encrypt 证书
其中,./certbot/etc/cloudflare.ini
里面存了 cf 的 api token,只有一行:
2.1. 导出证书
--deploy-hook /etc/letsencrypt/copy_certs_out.sh
在申请完证书后会自动执行。此脚本放在宿主机的./certbot/etc/
目录下,内容:
将最后存放证书的./cert
目录映射进其他需要使用证书的容器即可
3. 手动生成证书
如果有时候需要手动申请一份 Let’s Encrypt 证书用于测试,可以跑如下一行命令来生成:
同样的,需要准备一份 cloudflare.ini
位于当前目录下,里面只有一行 cloudflare api token:
执行完毕后,证书会生成在当前文件夹的 certs/live/<你的域名> 目录下。其中 privkey.pem
为私钥,fullchain.pem
为完整 crt 证书。