Перейти к содержимому
EN
← Все статьи

ACME HTTP-01, DNS-01 и TLS-ALPN-01: выбор проверки домена

Коротко:

HTTP-01 проверяет файл по HTTP на порту 80; DNS-01 проверяет TXT-запись _acme-challenge; TLS-ALPN-01 проверяет специальный ответ TLS на 443. Для wildcard нужен DNS-01. Для обычного сайта выбирайте тот путь, который можно автоматически поддерживать и проверять при каждом продлении.

Дата-центр с тремя сетевыми маршрутами проверки домена
Способ ACME выбирают по тому, какой маршрут можно надёжно автоматизировать.

ACME выдаёт сертификат после доказательства контроля над идентификатором. Тип challenge выбирает ACME-клиент в пределах предложенных CA вариантов. У Let’s Encrypt три распространённых способа; их условия изложены в официальной документации, HTTP-01 и DNS-01 определены в RFC 8555, TLS-ALPN-01 — в RFC 8737. Задача администратора — обеспечить маршрутизацию и продление, а не один раз пройти ручную проверку.

Что проверяет каждый маршрут

МетодМаршрут валидатораКогда подходитОграничение
HTTP-01http://имя/.well-known/acme-challenge/..., порт 80Обычный публичный веб-сайтНе выдаёт wildcard; запрос должен дойти до нужного токена
DNS-01TXT _acme-challenge.имяWildcard, внутренний сервер, отсутствие входящего HTTPНужен безопасный доступ к DNS API или ручное обновление при каждом продлении
TLS-ALPN-01TLS на 443 с ALPN acme-tls/1Клиент управляет TLS-терминаторомПрокси должен пропускать специальное рукопожатие; wildcard не поддерживается

HTTP-01 нельзя проверить на произвольном порту. Переадресация допустима в пределах правил CA, но CDN и редиректы нередко уводят запрос не на тот сервер. У DNS-01 проверяют TXT в публичной авторитетной зоне: локальный DNS-кэш может запаздывать, а рекурсивный ответ не всегда показывает актуальное состояние. Сравните авторитетный и рекурсивный ответы dig до повторной попытки.

Три пути проверки: HTTP, DNS и TLS
Каждый challenge подтверждает контроль над доменом своим маршрутом.

Матрица выбора для реальной инфраструктуры

Если нужен *.example.com, выбирайте DNS-01 и выдавайте DNS-токену минимальные права. Если сайт доступен на 80 и веб-сервер контролируется вашим ACME-клиентом, HTTP-01 обычно проще в сопровождении. Если порт 80 закрыт, но клиент управляет внешним TLS-терминатором на 443, возможен TLS-ALPN-01. При CDN проверьте, где фактически заканчивается TLS и куда маршрутизируется /.well-known/; внутренний nginx может вообще не видеть проверку. О том, как определить внешний сертификат, см. проверку s_client.

Перед запуском автоматизации опишите, кто владеет DNS API, веб-корнем и прокси. Для DNS-01 применяйте отдельный ограниченный токен; не кладите ключ провайдера в репозиторий. Для HTTP-01 откройте точный путь, а не весь административный интерфейс. При нескольких фронтендах токен должен быть доступен с каждого публичного адреса или попадать в общий backend. Проверьте DNS-записи корня домена и TTL, если изменяли делегирование.

Предварительная проверка без выпуска сертификата

dig +short TXT _acme-challenge.example.com
curl -i http://example.com/.well-known/acme-challenge/test-token
openssl s_client -connect example.com:443 -servername example.com -alpn acme-tls/1 </dev/null
# Для настоящего ACME-токена используйте staging CA и dry-run клиента.

Эти команды проверяют маршрут, но не доказывают успешную авторизацию: содержимое токена и ответ TLS формирует ACME-клиент. Для Certbot используйте официальный dry-run со staging, затем проверьте планировщик продления и журнал. Ошибку «unauthorized» связывайте с конкретной проверкой: HTTP 404 указывает на путь, отсутствие TXT — на публикацию DNS, неверный ALPN — на TLS-терминатор. Не полагайтесь на выдуманный текст лога: у разных клиентов формулировки различаются.

Как сделан материал

Матрица составлена по RFC 8555, RFC 8737 и правилам Let’s Encrypt; команды являются предварительными проверками, а не отчётом о реально выпущенном сертификате. В исследовании SerpAPI сравнили выдачу Google US и Яндекса; Wordstat региона 225 не вернул оценку точной фразы, для более широкой certbot dns 01 получено 9. Частотность не является мерой безопасности метода.

Частые вопросы

Можно ли получить wildcard через HTTP-01?

У Let’s Encrypt для wildcard требуется DNS-01.

Нужно ли открывать 80 для TLS-ALPN-01?

Сам TLS-ALPN-01 работает на 443. Проверьте, что именно ваш внешний TLS-терминатор принимает специальный ALPN.

Почему TXT уже виден мне, а CA его не видит?

Проверьте авторитетные NS, делегирование, имя записи и время кэширования у разных резолверов.

Когда выбирать DNS-01 без wildcard?

Когда входящий HTTP недоступен или сертификат нужен внутреннему сервису, при условии безопасной автоматизации DNS.

Источники

Проверьте ваш сайт прямо сейчас

Проверить SSL своего сайта →
Другие статьи: SSL/TLS
SSL/TLS
Сертификат Минцифры: как установить и вернуть доступ к банкам
31.08.2026 · 4 876 просм.
SSL/TLS
Подключение не защищено: что значит и как исправить ошибку
23.09.2026 · 4 109 просм.
SSL/TLS
SSL Handshake Failed: причины ошибки и пошаговая диагностика
15.04.2026 · 3 934 просм.
SSL/TLS
ERR_CERT_AUTHORITY_INVALID: что значит и как исправить ошибку
13.07.2026 · 3 774 просм.