Certbot: Challenge failed for domain — не удалось выпустить сертификат

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Ошибка Certbot «Challenge failed for domain» значит, что Let's Encrypt не смог проверить домен. Проверьте DNS-запись A, откройте порт 80, уберите редирект на /.well-known/acme-challenge и учтите лимиты запросов.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

#Что означает ошибка

Сообщение
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.

#Пошаговое решение

  1. Проверьте DNSВ панели Certbot или в журнале терминала найдите точный текст ошибки Challenge failed и имя домена, для которого проверка не прошла. Различите HTTP-01 (проверка файла через порт 80), DNS-01 (TXT-запись) и TLS-ALPN-01 (порт 443) по использованной команде/плагину. Для каждой проверки требования разные. Сохраните журнал без приватных ключей, чтобы не повторять выпуск вслепую.
  2. Откройте порт 80Для HTTP-01 проверьте DNS домена: на сервере или компьютере с dig выполните dig A example.com +short и dig AAAA example.com +short, заменив адрес. Сравните ответы с реальным публичным IPv4/IPv6 сервера, где Certbot должен обслужить запрос. При наличии неверной AAAA проверка может идти на другой сервер; исправляйте только ошибочную запись у авторитетного DNS-провайдера.
  3. Проверьте доступностьДля проверки через веб-сервер откройте из внешней сети http://ваш-домен/.well-known/acme-challenge/ и убедитесь, что запрос приходит к правильному виртуальному хосту. Сам каталог может отвечать 404 без реального токена — это не доказательство ошибки; важнее отсутствие блокировок, неправильного перенаправления и чужого сервера. Посмотрите access/error.log в момент теста; не удаляйте все редиректы HTTPS наугад.
  4. Проверьте webrootЕсли используется HTTP-01, проверьте доступность входящего TCP-порта 80 из Интернета через межсетевой экран хостинга и сервера. На UFW команда sudo ufw status numbered покажет правила; добавлять allow 80/tcp разрешено только при согласованной сетевой политике. Если внешний провайдер блокирует порт 80, выбирайте поддерживаемый DNS-01 вместо отключения защиты и открытия лишних служб.
  5. Исключите редиректПеред повторной попыткой выполните sudo nginx -t (для Nginx) или sudo apachectl configtest (для Apache), убедитесь, что домен указан в нужном виртуальном хосте. Если применяется Certbot с интеграцией Nginx, используйте sudo certbot --nginx -d example.com после подстановки своего домена и проверки доступности challenge. На хостинге с панелью или контейнером выполняйте процедуру через поддерживаемый способ, а не параллельно двумя клиентами.
  6. Используйте плагинЕсли используется DNS-01, в панели авторитетного DNS-провайдера создайте TXT-запись с точным именем _acme-challenge и значением, которое показал Certbot именно в этой попытке. Утилитой dig TXT _acme-challenge.example.com +short проверьте доступность записи снаружи. Не используйте старый токен из предыдущего запуска; после успешной проверки удаляйте только временные записи, если этого требует используемый способ.
  7. Проверьте без выпускаПосле успешного выпуска проверьте, что веб-сервер действительно отдаёт новый сертификат: откройте браузер → сведения о защищённом соединении → сертификат и сравните SAN и срок действия. Для клиента Certbot выполните sudo certbot renew --dry-run с учётом требований вашего плагина, чтобы убедиться в возможности последующего продления. Если сам сертификат выпущен, а браузер видит старый, проверьте пути в конфигурации и её перезагрузку.
  8. Для wildcard используйте DNS-01Если попытки часто повторяются и возникают ограничения центра сертификации, прекратите новые запросы до проверки журналов и документации ограничений. Для поддержки подготовьте домен, тип challenge, возвращённый HTTP-статус, DNS-записи и точный текст ошибки без паролей. В случае ошибки проверяйте именно её причину: увеличение таймаута или массовое открытие портов без диагноза бесполезно.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Диагностика DNS и порта и выпуск сертификата.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Диагностика DNS и порта и выпуск сертификата.
    dig +short example.com A
    dig +short example.com AAAA
    sudo ufw status numbered
    # Изменяйте правила UFW только после согласования с администратором сети.
    sudo certbot renew --dry-run

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 2Разрешите проверку ACME до редиректа на https.
    Nginx
    Разрешите проверку ACME до редиректа на https.
    server {
        listen 80;
        server_name example.com www.example.com;
        location /.well-known/acme-challenge/ { root /var/www/letsencrypt; }
        location / { return 301 https://$host$request_uri; }
    }

Лимиты Let's Encrypt: 5 неудачных проверок в час для одного домена и 50 сертификатов в неделю на домен (подробности — в документации). Поэтому не повторяйте команду бесконечно: проверяйте настройки через --dry-run, который использует тестовый сервер. Диагностировать проблему поможет сервис Let's Debug. Если за сервером стоит CDN (Cloudflare), на время выпуска переведите запись в режим «DNS only» или используйте DNS-01. Журнал Certbot — /var/log/letsencrypt/letsencrypt.log.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.