certbot与nginx的操作

certbot与nginx的操作

我希望有人可以满足我对 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"

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

它确实有效,但让我烦恼的是,我无法在我的配置中找到任何内容告诉 nginx 允许任何域的 '.well-known/acme-challenge' 上的请求通过。它不在我的任何 nginx 配置文件中。我只是想知道 certbot 如何能够在该路径上提供令牌。我已经在文件系统中查找了 'well-known' 和 'acme-challenge',但什么也没找到。我的站点 nginx 配置文件中唯一的 'root' 指令指向它们各自的静态站点。/usr/share/nginx/html 中只有默认的 'It Works' 站点。

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

答案1

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

certbot 的 nginx 插件本身就有几千行代码,用于实现解析器、身份验证器、安装程序并处理现实世界的复杂问题。对其工作原理的关注程度取决于您。对于某些人来说,一个可以自动修复其 https 配置的花哨程序是一个功能,而对于另一些人来说,则是一个错误。

相关内容