Ошибки

Certbot: Invalid response from … 404 — по адресу отвечает не тот сервер

Let’s Encrypt подключился по адресу из DNS, но получил 404 — файла проверки там нет. Значит, A- или AAAA-запись ведёт на другой сервер, или при --webroot указана не та папка.

Обновлено 10.10.2026≈ 6 мин чтения
Содержание 11

Что сделать прямо сейчас

  1. Узнайте, на какие IP-адреса ведёт домен, — шаг 1.
  2. Исправьте запись, которая ведёт не на ваш сервер, — шаг 2.
  3. Если в команде был --webroot, проверьте папку — шаг 3.
  4. Повторите выпуск — шаг 4.

Что значит это сообщение

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for example.com and www.example.com

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
  Identifier: example.com
  Type:   unauthorized
  Detail: 203.0.113.10: Invalid response from http://example.com/.well-known/acme-challenge/kD8…: 404

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

Invalid response — «неверный ответ». Let’s Encrypt подключился к IP-адресу из начала строки Detail и запросил файл проверки, а сервер ответил кодом 404 — «не найдено». Длинная строка из букв и цифр после acme-challenge/ у вас будет своя — здесь она сокращена до многоточия.

С ключом --nginx Certbot сам настраивает ответ на этот адрес в nginx вашего сервера. Раз ответа нет, запрос пришёл не туда:

  • A-запись ведёт на другой сервер — например, на старый хостинг;
  • у домена есть AAAA-запись (IPv6) на другой сервер. Let’s Encrypt идёт сначала по IPv6-адресу. На IPv4 он переходит, только если подключиться по IPv6 не удалось, — а здесь подключение было, и ответил чужой сервер;
  • Certbot запускали с ключом --webroot, и в -w указана не та папка, из которой nginx отдаёт сайт.

Если адрес в Detail с двоеточиями, например 2001:db8::10, это IPv6 — дело в AAAA-записи. Вместо example.com в примерах подставьте свой домен. Адрес 203.0.113.10 в примерах — условный, у вас в сообщении будет IP-адрес из DNS вашего домена.

Шаг 1. Узнайте, на какие адреса ведёт домен

На своём компьютере откройте терминал (Как открыть терминал) и выполните:

nslookup example.com

В ответе после слова Name: идут строки Address: — все адреса домена. Адрес с точками — из A-записи, с двоеточиями — из AAAA. Сравните их с адресами сервера в панели провайдера. Подробнее о проверке — в Как проверить DNS-записи: IP-адрес домена.

Шаг 2. Исправьте A- или AAAA-запись

  • A-запись ведёт не на ваш сервер — исправьте её по инструкции A-запись.
  • Есть AAAA-запись, а у сервера IPv6-адреса нет или он другой — удалите её или исправьте по инструкции AAAA-запись.

Новые записи видны не сразу: повторяйте nslookup, пока в ответе не останутся только адреса вашего сервера.

Шаг 3. Если вы запускали Certbot с --webroot

С ключом --webroot Certbot кладёт файл проверки в папку из -w, в подпапку .well-known/acme-challenge/, а nginx должен отдавать его по адресу сайта. Для этого папка в -w должна совпадать со строкой root в настройках сайта. Посмотрите её:

grep -n root /etc/nginx/sites-available/example.com

Вместо example.com подставьте имя своего файла настроек. Если строка такая:

    root /var/www/example.com/html;

то и в команде Certbot должно быть -w /var/www/example.com/html. Проверить, что nginx отдаёт файлы из этой папки, можно самим. Создайте пробный файл:

sudo mkdir -p /var/www/example.com/html/.well-known/acme-challenge
echo ok | sudo tee /var/www/example.com/html/.well-known/acme-challenge/test

и откройте его со своего компьютера:

curl http://example.com/.well-known/acme-challenge/test

В Windows вводите curl в командной строке, а не в PowerShell — почему, сказано в разделе Как открыть терминал в Windows.

Должно прийти ok. Если пришла страница с 404, nginx берёт файлы из другой папки или запрос попал в другой блок server. После проверки удалите пробный файл:

sudo rm /var/www/example.com/html/.well-known/acme-challenge/test

Если сайт работает на nginx, проще выпустить сертификат с ключом --nginx — тогда папка не нужна.

Шаг 4. Повторите выпуск

Сначала проверьте на тестовом сервере Let’s Encrypt. Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

sudo certbot certonly --nginx --dry-run -d example.com -d www.example.com

Если в конце строка The dry run was successful., выпустите сертификат:

sudo certbot --nginx -d example.com -d www.example.com

Если код не 404

Код в конце DetailЧто проверить
403Сервер запретил доступ. При --webroot nginx не может прочитать папку — см. 403 Forbidden
500, 502, 503Сервер по этому адресу отвечает ошибкой. Проверьте, тот ли это сервер (шаг 1), и посмотрите журнал ошибок nginx

Как проверить

nslookup example.com показывает только адреса вашего сервера, а Certbot с ключом --dry-run пишет The dry run was successful.

Похожие ошибки

СообщениеЧем отличается
Timeout during connectПодключиться к серверу не удалось совсем
Connection refusedСервер отказал в подключении к порту 80
404 Not FoundТот же код, но в браузере

Тексты сообщений сверены с исходным кодом Certbot 5.8.0 — эта версия ставится через snap, как в инструкции Бесплатный SSL-сертификат, — и сервера Let’s Encrypt. В Certbot 2.9.0 из пакетов Ubuntu 24.04 вместо Identifier: стоит Domain:, а некоторые строки могут немного отличаться.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026