#Что означает ошибка
Challenge failed for domain example.com Failed authorization procedure
Чтобы выпустить сертификат Let's Encrypt, сервер удостоверяется, что вы управляете доменом: HTTP-01 (файл по адресу http://домен/.well-known/acme-challenge/... на порту 80) либо DNS-01 (TXT-запись). Сообщение Challenge failed for domain говорит, что проверка не прошла. Подробности находятся ниже по тексту ошибки: «Timeout during connect» (порт закрыт), «404» (неверный root), «NXDOMAIN» (домен не указывает на сервер).
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Домен указывает не на ваш серверA-запись ведёт на другой IP. | dig +short домен показывает чужой IP. | Исправьте DNS и дождитесь обновления. |
| Закрыт порт 80Файрвол блокирует HTTP. | curl с другой машины не отвечает. | Откройте порт 80. |
| Редирект или правила сайта мешаютПринудительный редирект или защита блокируют каталог. | Ответ 301/403/404 на .well-known. | Разрешите каталог. |
| Превышен лимит запросовСлишком много попыток. | Сообщение про rate limit. | Подождите, используйте --dry-run. |
#Пошаговое решение
- Проверьте DNSВ панели Certbot или в журнале терминала найдите точный текст ошибки
Challenge failedи имя домена, для которого проверка не прошла. Различите HTTP-01 (проверка файла через порт 80), DNS-01 (TXT-запись) и TLS-ALPN-01 (порт 443) по использованной команде/плагину. Для каждой проверки требования разные. Сохраните журнал без приватных ключей, чтобы не повторять выпуск вслепую. - Откройте порт 80Для HTTP-01 проверьте DNS домена: на сервере или компьютере с
digвыполнитеdig A example.com +shortиdig AAAA example.com +short, заменив адрес. Сравните ответы с реальным публичным IPv4/IPv6 сервера, где Certbot должен обслужить запрос. При наличии неверной AAAA проверка может идти на другой сервер; исправляйте только ошибочную запись у авторитетного DNS-провайдера. - Проверьте доступностьДля проверки через веб-сервер откройте из внешней сети
http://ваш-домен/.well-known/acme-challenge/и убедитесь, что запрос приходит к правильному виртуальному хосту. Сам каталог может отвечать 404 без реального токена — это не доказательство ошибки; важнее отсутствие блокировок, неправильного перенаправления и чужого сервера. Посмотрите access/error.log в момент теста; не удаляйте все редиректы HTTPS наугад. - Проверьте webrootЕсли используется HTTP-01, проверьте доступность входящего TCP-порта 80 из Интернета через межсетевой экран хостинга и сервера. На UFW команда
sudo ufw status numberedпокажет правила; добавлятьallow 80/tcpразрешено только при согласованной сетевой политике. Если внешний провайдер блокирует порт 80, выбирайте поддерживаемый DNS-01 вместо отключения защиты и открытия лишних служб. - Исключите редиректПеред повторной попыткой выполните
sudo nginx -t(для Nginx) илиsudo apachectl configtest(для Apache), убедитесь, что домен указан в нужном виртуальном хосте. Если применяется Certbot с интеграцией Nginx, используйтеsudo certbot --nginx -d example.comпосле подстановки своего домена и проверки доступности challenge. На хостинге с панелью или контейнером выполняйте процедуру через поддерживаемый способ, а не параллельно двумя клиентами. - Используйте плагинЕсли используется DNS-01, в панели авторитетного DNS-провайдера создайте TXT-запись с точным именем
_acme-challengeи значением, которое показал Certbot именно в этой попытке. Утилитойdig TXT _acme-challenge.example.com +shortпроверьте доступность записи снаружи. Не используйте старый токен из предыдущего запуска; после успешной проверки удаляйте только временные записи, если этого требует используемый способ. - Проверьте без выпускаПосле успешного выпуска проверьте, что веб-сервер действительно отдаёт новый сертификат: откройте браузер → сведения о защищённом соединении → сертификат и сравните SAN и срок действия. Для клиента Certbot выполните
sudo certbot renew --dry-runс учётом требований вашего плагина, чтобы убедиться в возможности последующего продления. Если сам сертификат выпущен, а браузер видит старый, проверьте пути в конфигурации и её перезагрузку. - Для wildcard используйте DNS-01Если попытки часто повторяются и возникают ограничения центра сертификации, прекратите новые запросы до проверки журналов и документации ограничений. Для поддержки подготовьте домен, тип challenge, возвращённый HTTP-статус, DNS-записи и точный текст ошибки без паролей. В случае ошибки проверяйте именно её причину: увеличение таймаута или массовое открытие портов без диагноза бесполезно.
- Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
Лимиты Let's Encrypt: 5 неудачных проверок в час для одного домена и 50 сертификатов в неделю на домен (подробности — в ). Поэтому не повторяйте команду бесконечно: проверяйте настройки через --dry-run, который использует тестовый сервер. Диагностировать проблему поможет сервис . Если за сервером стоит CDN (Cloudflare), на время выпуска переведите запись в режим «DNS only» или используйте DNS-01. Журнал Certbot — /var/log/letsencrypt/letsencrypt.log.