Сертификаты

Все сертификаты из конфигов 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): фоновая задача при каждом продлении ненадолго останавливает сайт сама.