DevOps и деплой

Let’s Encrypt: почему challenge даёт 404

DevOps и деплой
09 февраля 2026 г.
320 просмотров
Let’s Encrypt: почему challenge даёт 404

Чаще всего проблема в Nginx или Cloudflare proxy.

Запускаешь Certbot / Let’s Encrypt, а он пишет “unauthorized” или “404 challenge”. Это значит: Let’s Encrypt не смог открыть challenge-файл из интернета. Как это работает: Let’s Encrypt пытается открыть: http://domain/.well-known/acme-challenge/xxxx Если файл не читается — сертификат не выдаётся. Самые частые причины и решения: 1) Неправильный location в Nginx Ты настроил /.well-known/acme-challenge/, но root не тот — файлы реально не отдаются. Решение: Сделай отдельный location и правильный root, например: location ^~ /.well-known/acme-challenge/ { root /var/www/letsencrypt; try_files $uri =404; } 2) Редирект “съедает” challenge HTTP→HTTPS редирект применяется ко всем запросам, включая challenge, и файл не находится/не доступен. Решение: Сделай исключение для challenge до редиректа. 3) Cloudflare proxy мешает Иногда proxy + cache rules не дают запросу корректно дойти до origin. Решения: - Временно поставь “DNS only” (серое облако) на время выпуска сертификата - Или отключи агрессивные правила кеша для challenge пути 4) Неправильный webroot в Certbot Ты даёшь certbot -w /path, но Nginx отдаёт файлы из другого места. Решение: -w должен совпадать с тем, откуда Nginx реально отдаёт файлы. Быстрый тест (обязателен): Создай файл: /var/www/letsencrypt/.well-known/acme-challenge/test И открой: http://domain/.well-known/acme-challenge/test Если открылось — Certbot тоже пройдёт. Совет KeyTD: Мы всегда оставляем отдельный ACME location, чтобы авто-renew потом не ломался.

Ismayil Ismayilov

Content Author at KeyTD

Ismayil shares practical notes on software quality, delivery speed, and building reliable products.