Let's Encrypt: certbot — Challenge failed for domain

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

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

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

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

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

Сообщение
Challenge failed

Чтобы выдать сертификат, Let's Encrypt проверяет, что вы управляете доменом: по HTTP (http-01) обращается к файлу в /.well-known/acme-challenge/ на порту 80, либо по DNS (dns-01) смотрит TXT-запись. Если сервер недоступен извне или отдаёт не то, проверка проваливается и certbot пишет Challenge failed for domain. Подробности лежат ниже сообщения: Detail: ....

#Причины и решения

Возможная причинаКак узнатьЧто делать
Порт 80 закрытФайрвол, облачный Security Group или провайдер блокируют входящий 80.curl http://домен/ снаружи не открывается.Откройте порт: sudo ufw allow 80,443/tcp.
Неверный DNSДомен указывает на другой IP или A-запись ещё не обновилась.dig +short домен возвращает чужой IP.Исправьте A/AAAA-запись и подождите.
Редирект блокирует проверкуПравило редиректа HTTP→HTTPS или на другой хост ломает проверку.В детали Invalid response и код 301/403.Исключите /.well-known/acme-challenge/ из редиректов.
Лимиты Let's EncryptСлишком много неудачных попыток или выпусков сертификатов.Сообщение too many failed authorizations.Подождите час и ознакомьтесь с лимитами.

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

  1. Прочитайте Detail в выводе certbotТам указано: Timeout during connect (порт закрыт), NXDOMAIN (нет DNS-записи), Invalid response from ... 404/403 (проблема веб-сервера).
  2. Проверьте DNSdig +short A example.com и dig +short AAAA example.com — IP должны совпадать с вашим сервером. Лишняя AAAA-запись на несуществующий IPv6 — частая причина.
  3. Проверьте доступность порта 80Проверку выполняет владелец домена для метода HTTP-01. С другой сети откройте http://ВАШ-ДОМЕН/.well-known/acme-challenge/ПРОБНЫЙ-ФАЙЛ, предварительно создав безобидный файл в том каталоге, который обслуживает веб-сервер для проверки Certbot. Должно открыться точное содержимое файла, а не просто любой HTTP-ответ. Ответ 404, 403 или перенаправление на неправильный хост не подтверждают, что проверка пройдёт. Проверьте разрешение домена в DNS, доступность порта 80 из интернета, конфигурацию виртуального хоста и лог Certbot. Не отключайте фаервол целиком: разрешайте только требуемый входящий трафик в своей конфигурации.
  4. Откройте портыВладелец сервера должен убедиться, что запросы проверяющего центра достигают сервера по TCP 80 для HTTP-01. Проверьте DNS имени и сетевые правила облака/хостинга, затем в Linux посмотрите активный брандмауэр (sudo ufw status, только если UFW используется). Не выполняйте автоматически ufw allow 80/tcp, пока не выяснены действующие правила безопасности; при необходимости откройте порт в согласованном межсетевом экране и проверьте с внешней сети. Порт 443 нужен для обычного HTTPS, но не заменяет порт 80 при HTTP-01. Если сервер управляется панелью хостинга, используйте её штатный выпуск сертификатов.
  5. Не блокируйте /.well-knownДля HTTP-01 центр сертификации должен получить файл http://ваш-домен/.well-known/acme-challenge/... из настроенного обработчика. В Nginx проверьте активный виртуальный хост и конфигурацию Certbot (sudo nginx -T выводит всю конфигурацию — не публикуйте секретные фрагменты). Убедитесь, что правила перенаправления или проксирования не блокируют путь проверки; при необходимости сделайте резервную копию файла конфигурации и изменяйте только нужный блок. После изменений сначала sudo nginx -t, затем штатная перезагрузка конфигурации. Пример root /var/www/html ниже не подходит, если фактический каталог сайта другой.
  6. Выпустите сертификат повторноТолько после исправления DNS и доступности HTTP-01 повторите выпуск с помощью вашего установленного клиента Certbot. Если используется Nginx и домены принадлежат вам, в терминале с правами администратора введите sudo certbot --nginx -d ваш-домен.example, заменив пример точным доменом; добавляйте -d www... лишь когда www действительно обслуживается и правильно разрешается. Успех — сообщение Certbot о выданном сертификате; затем откройте сайт по HTTPS и проверьте срок. certbot renew --dry-run — отдельная проверка автоматического продления. Не запускайте эти команды на сервере, где сертификатами управляет панель хостинга, без согласования.
  7. Проверка DNS и порта, тестовый запуск certbot без расходования лимитов
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверка DNS и порта, тестовый запуск certbot без расходования лимитов.
    dig +short A example.com
    curl -I http://example.com/.well-known/acme-challenge/test
    sudo certbot renew --dry-run
    sudo certbot --nginx -d example.com -d www.example.com

Для проверки перед выпуском воспользуйтесь сервисом Let's Debug: он выполняет те же проверки и подсвечивает ошибку. Если ваш сервер за Cloudflare в режиме прокси, временно отключите «оранжевое облако» или используйте метод dns-01. Wildcard-сертификаты (*.example.com) выдаются только через dns-01. Для DNS-проверки существует множество плагинов certbot для популярных DNS-провайдеров.

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

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

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