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

Чаще всего проблема в 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 shares practical notes on software quality, delivery speed, and building reliable products.
Похожие посты

09 февр. 2026 г.

09 февр. 2026 г.
DevOps и деплой
План бэкапа: что если сервер “упал” завтра?

09 февр. 2026 г.





