Перейти к содержанию

0006. Сертификаты по HTTP-01 вместо групповых по DNS-01

Дата: август 2026. Состояние: принято.

Контекст

У стенда шесть имён: карта, интерфейс программирования, Grafana, Prometheus, Alertmanager, документация. Каждому нужен сертификат.

Один групповой сертификат на *.metroskop.petproj.ru был бы аккуратнее: одна выдача, одно обновление. Но групповой сертификат Let's Encrypt выдаёт только по проверке DNS-01 — нужно на время выдачи создать запись TXT в зоне. Это делается через интерфейс регистратора, и у reg.ru, где живёт домен, поддержки в cert-manager нет.

Обходной путь — делегировать поддомен провайдеру DNS, который поддерживается (Cloudflare, например), и хранить его ключ доступа в кластере.

Решение

Отдельный сертификат на каждое имя, проверка HTTP-01 через Traefik. cert-manager на время проверки поднимает временный маршрут /.well-known/acme-challenge/, Let's Encrypt обращается по 80-му порту, сертификат выдаётся и складывается в секрет. Обновление автоматическое, за тридцать дней до истечения.

Последствия

Что получили. Ни одного внешнего ключа доступа. Вся настройка — два объекта ClusterIssuer (тестовый и рабочий) и ссылка на них в описании публикации. Тестовый выпускающий центр — не формальность: у рабочего жёсткий предел на число запросов, и отладка на нём заканчивается блокировкой на неделю.

Чем заплатили. Шесть сертификатов вместо одного и шесть обновлений вместо одного. Автоматика справляется, но каждое новое имя требует записи в описании публикации — групповой сертификат покрывал бы их заранее.

Проверка HTTP-01 требует, чтобы 80-й порт был открыт снаружи и вёл на Traefik. Это ограничение зафиксировано в правилах файрвола и в инструкции дежурного: закрытый 80-й порт — самая частая причина того, что обновление не прошло.

Что рассматривалось

Делегирование поддомена в Cloudflare для DNS-01 — работает, но добавляет второго поставщика DNS в схему и ключ доступа к нему в кластер. Для шести имён это дороже, чем шесть сертификатов.

Самоподписанные сертификаты — не годится: стенд открывают по ссылке, и предупреждение браузера обесценило бы всё остальное.

Сертификат от регистратора вручную — годовое обновление руками. Ровно та работа, которую следует автоматизировать, а не показывать.