Skip to content

Сертификаты ​

Сертификаты

Все сертификаты из конфигов nginx, haproxy, caddy и /etc/letsencrypt: срок, имена, издатель, алгоритм, ключ, самоподписанность. Каталоги crt у haproxy раскрываются по SNI, производные копии (склеенный PEM для haproxy) находятся по отпечаткам и наследуют статус оригинала.

Не только даты ​

  • Сверка с реальным сокетом: nkt открывает настоящее TLS-соединение к адресу сервиса и сравнивает отпечатки — файл на диске может быть свежим, а сервис так и не сделал reload. Ошибка соединения не считается несовпадением — помечается «не проверено», чтобы сетевая проблема не превращалась в ложное обвинение сервиса.
  • Состояние автопродления: знает ли certbot о сертификате, активен ли certbot.timer или cron. Просроченный сертификат — почти всегда сломанная автоматизация, а не забывчивость.

Действия ​

  • Продлить линейку certbot через --standalone: службы и процессы, занимающие 80/443 (в том числе запущенные вручную), останавливаются и запускаются снова независимо от результата; перед вызовом проверяется, кто держит порт 80.
  • Выпустить новый сертификат Let's Encrypt; certbot ставится, если его нет.
  • Собрать PEM для haproxy из линейки certbot с перезагрузкой haproxy.
  • Самоподписанный: RSA 2048/3072/4096, несколько имён, wildcard, юникод-домены.
  • Заготовки конфигов nginx, haproxy и caddy под выпущенный сертификат — с копированием в буфер.

Всё долгое идёт заданием с живым журналом — окно можно закрыть, на хосте ничего не остановится. Автопродление по расписанию — NKT_AUTO_RENEW_CERTS=true (интервал и запас — NKT_AUTO_RENEW_INTERVAL, NKT_AUTO_RENEW_WITHIN): фоновая задача при каждом продлении ненадолго останавливает сайт сама.