#Что означает ошибка
Certbot renewal failed
Сертификаты Let's Encrypt действуют 90 дней, поэтому их продление автоматизируют: certbot запускается по таймеру systemd или cron и повторно проходит проверку владения доменом. Если проверка не удаётся, продление завершается ошибкой, а сайт через некоторое время показывает просроченный сертификат.
Проверка (challenge) HTTP-01 требует, чтобы Let's Encrypt мог по адресу http://домен/.well-known/acme-challenge/ получить файл с вашего сервера. Любая преграда — закрытый порт 80, редирект, неверный DNS, блокировка правилами nginx — приводит к ошибке.
Проверьте доступность порта 80, DNS и конфигурацию веб-сервера.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Порт 80Закрыт. | Проявляется как «Certbot renewal failed» или близкий по смыслу сбой. | Откройте. |
| DNSНеверный. | Проявляется как «Certbot renewal failed» или близкий по смыслу сбой. | Исправьте. |
| РедиректКонфликт. | Проявляется как «Certbot renewal failed» или близкий по смыслу сбой. | Проверьте. |
| ЛимитыПревышены. | Проявляется как «Certbot renewal failed» или близкий по смыслу сбой. | Подождите. |
#Пошаговое решение
- Проверьте certbot renew --dry-runНа сервере, где работает certbot, выполните
sudo certbot certificatesи найдите точное имя сертификата, набор доменов, дату окончания и используемый способ подтверждения. Убедитесь, что домен всё ещё указывает на правильный сервер, а задача автоматического обновления не отключена. - Откройте порт 80Выполните
sudo certbot renew --dry-runи изучите первую ошибку: проблемы HTTP-01 требуют доступности порта 80 и маршрута/.well-known/acme-challenge/, DNS-01 — корректной TXT-записи и прав API. Не отключайте межсетевой экран полностью и не перезаписывайте конфигурацию всех виртуальных хостов. - Проверьте виртуальный хостПосле устранения причины снова запустите пробное продление и убедитесь в успехе. Проверьте системный таймер certbot, развёрнутый сертификат через браузер/OpenSSL и настройку автоматической перезагрузки нужного веб-сервера. Для важного сайта сохраните резервную копию конфигурации и настройте контроль истечения срока.
#Диагностика
Выполните certbot renew --dry-run: он проходит весь процесс без выпуска сертификата и показывает точную причину. Просмотрите журнал /var/log/letsencrypt/letsencrypt.log. Проверьте, что DNS-запись домена указывает на этот сервер (не на CDN, который перехватывает проверки) и порт 80 доступен из интернета.
#Типичные причины
Порт 80 закрыт файрволом или облачной группой безопасности; nginx перенаправляет все запросы на HTTPS до проверки; в конфигурации блокируется каталог /.well-known; сменился путь webroot; лимиты Let's Encrypt (превышено число попыток); IPv6-запись AAAA указывает на неверный адрес.
#Если порт 80 недоступен
Используйте проверку DNS-01 (требуется доступ к API DNS-провайдера) или TLS-ALPN. Для wildcard-сертификатов (*.example.com) DNS-01 обязателен. После исправления перезагрузите веб-сервер хуком --deploy-hook "systemctl reload nginx".
sudo certbot renew --dry-runsudo certbot certificates