Я установил Let's Encrypt с конфигурацией Nginx с режимом проверки DNS. Как указано в документации для автоматического обновления, я добавил следующую запись:
15 3 * * * /usr/bin/certbot renew --quiet
Однако это не сработало, поэтому я запустил его в командной строке, чтобы посмотреть, что произошло. Я получаю ошибку ниже, я понимаю, что порт 80/443 используется Nginx, и мне нужно остановить его, когда я обновляю его вручную, мне интересно, как мне настроить его в режиме AUTO RENEW, т. е. добавить остановку Nginx перед этим cronjob и перезапустить после него? Но делать это в cronjob немного слишком опасно, так как если Nginx выйдет из строя, это создаст много простоев.
[centos]# /usr/bin/certbot renew --quiet
Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an
unexpected error:
Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)
Есть идеи?
решение1
Запустите certbot с помощью--nginx
или--webroot
параметр, как указано в документации, чтобы он использовал работающий nginx вместо запуска открытого веб-сервера.
certbot renew --quiet --nginx
или
certbot renew --quiet --webroot --webroot-path /var/www/html
Не забудьте также использовать --deploy-hook
параметр для перезагрузки nginx после успешного обновления.
Примечание: вам необходимо установить плагин nginx, если вы еще не установили его, с помощью команды ниже.
yum install python-certbot-nginx