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 配置文件中唯一的“根”指令指向它們各自的靜態站點。在 /usr/share/nginx/html 中只有預設的“It Works”站點。
certbot 是否啟動了自己的伺服器?我很懷疑,因為我認為它不能與 nginx 同時綁定到埠 80。
certbot 的 nginx外掛,當它需要通過 http進行 ACME 挑戰時,會修改 nginx 的配置。他們編寫的配置解析器能夠恢復挑戰配置,因為它已被清理,您不會看到它持續存在。
僅 certbot 的 nginx 外掛就是幾千行程式碼,用於實現解析器、身份驗證器、安裝程序並處理現實世界的複雜情況。對它如何工作的關心程度取決於您。對某些人來說,自動修復其 https 配置的精美程序是一項功能,而對其他人來說則是一個錯誤。