certbot和nginx的运行

Tha*_*nce 4 nginx certbot

我希望有人能够满足我对 certbot 和 nginx 在续订期间如何交互的好奇心。

在我的 Linux 主机上,我设置了 certbot 和 certbot-nginx 插件。我在 /etc/nginx/conf.d 中设置了一些常规的 nginx 站点定义,并且在注册证书时,certbot-nginx 插件将 TLS 信息添加到我的各个站点的这些单独的 nginx conf 文件中。

要更新,我在 systemd 服务中每天触发一次以下内容:

/bin/certbot renew --non-interactive --agree-tos --no-self-upgrade --post-hook "systemctl reload nginx"
Run Code Online (Sandbox Code Playgroud)

使用journalctl查看systemd日志,我可以看到证书在适当的时候被更新。

它可以工作,但让我烦恼的是,我在配置中找不到任何告诉 nginx 让请求通过我的任何域的“.well-known/acme-challenge”的内容。它不在我的任何 nginx 配置文件中。我只是想知道 certbot 如何能够在该路径上提供令牌。我已经在文件系统中查找了“众所周知”和“acme-challenge”的块,但什么也没有出现。我的站点 nginx 配置文件中唯一的“root”指令指向它们各自的静态站点。除了 /usr/share/nginx/html 中的默认“It Works”站点之外什么都没有。

certbot 是否会启动自己的服务器?我很怀疑,因为我不认为它能够与 nginx 同时绑定到端口 80。

Joh*_*ald 5

certbot的nginx插件,当它需要通过http进行ACME挑战时,将修改nginx的配置。他们编写的配置解析器能够恢复挑战配置,因为它被清理了,你不会看到它持续存在。

仅 certbot 的 nginx 插件就有几千行代码,用于实现解析器、验证器、安装程序并处理现实世界的复杂情况。关心它如何运作的程度取决于你。对于某些人来说,自动修复 https 配置的奇特程序是一个功能,而对于其他人来说则是一个错误。