Tôi đã hy vọng ai đó có thể thỏa mãn sự tò mò của tôi về cách certbot và nginx tương tác trong thời gian gia hạn.
Trên máy chủ Linux của mình, tôi đã thiết lập certbot và plugin certbot-nginx.
Tôi đã thiết lập một số định nghĩa trang web nginx thông thường trong /etc/nginx/conf.d và khi đăng ký chứng chỉ, plugin certbot-nginx đã thêm thông tin TLS vào các tệp conf nginx riêng lẻ này cho các trang web khác nhau của tôi.
Để gia hạn, tôi có những điều sau đây trong dịch vụ systemd được kích hoạt mỗi ngày một lần:
/bin/certbot gia hạn --non-interactive --agree-tos --no-self-upgrade --post-hook "systemctl reload nginx"
Nhìn vào nhật ký systemd với journalctl, tôi có thể thấy các chứng chỉ được cập nhật khi thích hợp.
Nó hoạt động, nhưng điều làm tôi khó chịu là tôi không thể tìm thấy bất kỳ thứ gì trong cấu hình yêu cầu nginx cho phép yêu cầu thông qua '.well-known/acme-challenge' cho bất kỳ miền nào của tôi. Nó không có trong bất kỳ tệp cấu hình nginx nào của tôi. Tôi chỉ tự hỏi làm thế nào certbot có thể cung cấp mã thông báo trên đường dẫn đó. Tôi đã lấy các phần của hệ thống tệp cho 'nổi tiếng' và 'acme-challenge', nhưng không có gì xuất hiện.Các lệnh 'root' duy nhất trong các tệp cấu hình nginx trang web của tôi trỏ đến các trang web tĩnh tương ứng của chúng. Không có gì ngoài trang web 'Nó hoạt động' mặc định trong /usr/share/nginx/html.
Liệu certbot có tạo ra một máy chủ của riêng mình không? Tôi đã nghi ngờ vì tôi không nghĩ rằng nó có thể liên kết với cổng 80 cùng lúc với nginx.