mongod 需要一个 certificateKeyFile ,它是证书和私钥的组合。
certbot 管理有效期不能超过 3 个月的 tls 证书的季度更新。成功运行 certbot 更新的结果是创建新的证书文件,这些文件可以通过位于/etc/letsencrypt/live/$(hostname -f)
.
有没有一种方法可以创建包含以下输出的符号链接、命名管道或循环设备:
cat /etc/letsencrypt/live/$(hostname -f)/{fullchain,privkey}.pem
我不想创建一个包含连接结果的实际文件,因为每次 certbot 扩展证书有效性时都必须更新该文件,并且 mongod 在 certbot 进行更新和某些自动化创建之间的任何时间段内都会被破坏包含 mongod 预期格式的证书的新串联。
我想到的一个解决方案是在 certbot 更新证书后使用 systemd 依赖链重新启动 mongod,并在 mongod.service 单元上使用 ExecStartPre 来创建串联的 certificateKeyFile。但如果有一种方法可以创建某种动态表示所需文件的串联,我就不需要这些了。
有任何想法吗?
如果证书文件在重新加载使用它们的任何守护程序之前就位,应该可以工作。至少在大多数 POSIX 操作系统上。尽管检查你的钩子脚本的顺序,并测试整个过程。自动化修复串联证书之前的任何窗口都可能长达几秒钟。
我的简单钩子
/etc/letsencrypt/renewal-hooks/deploy/fullchain.sh
只是连接每个活动钥匙+链,并实时存储在其中。在这个特定的盒子上,我选择让 certbot 更新负责重新加载守护进程,因为它知道更新何时真正发生。不是系统单位。
/etc/letsencrypt/renewal-hooks/deploy/web.sh
也非常简单: