Что проверять, когда истекает срок TLS-сертификата
Почему автопродление молча не срабатывает, диагностический список по шагам, как настроить заблаговременное уведомление и почему перезагрузка сервиса не менее важна, чем сам выпуск.
Просроченный сертификат — это не деградация, а полный отказ: браузер показывает предупреждение во весь экран, и до сайта никто не доходит. При этом в большинстве случаев автопродление было настроено и, судя по логам, работало.
Разберём, где рвётся цепочка и как узнавать о проблеме до того, как её увидят посетители.
Продление — это две операции, а не одна
Главное недопонимание. Автопродление состоит из двух шагов, и второй забывают чаще первого.
1. Выпустить новый сертификат → файлы на диске обновились
2. Перезагрузить сервис → сервис начал их отдавать
Без шага 2 сертификат обновлён, а посетитель видит старый.Веб-сервер читает сертификат при старте и держит его в памяти. Пока он не перечитает конфигурацию, файл на диске может быть каким угодно свежим — наружу уйдёт тот, что был загружен раньше.
Диагностика по шагам
Порядок важен: он идёт от того, что видит посетитель, к тому, что лежит на диске.
Шаг 1
Посмотреть, что реально отдаётся наружу
Не файл на диске, а ответ сервера. Именно здесь видно расхождение между «обновлён» и «отдаётся».
Шаг 2
Сравнить с датой файла на диске
Если файл свежий, а отдаётся старый — проблема в перезагрузке сервиса, дальше можно не искать.
Шаг 3
Проверить, запускалось ли задание продления
Таймер может быть выключен, задание удалено при обновлении системы или падать молча.
Шаг 4
Проверить прохождение проверки домена
Самая частая причина отказа выпуска: изменился DNS, закрылся путь для проверки, поменялась конфигурация веб-сервера.
Шаг 5
Проверить полноту цепочки
Браузеры часто прощают неполную цепочку, а мобильные клиенты и API-клиенты — нет. Ошибка проявляется выборочно.
Шаг 6
Проверить все имена в сертификате
Домен продлился, а поддомен, добавленный позже, в сертификат не попал.
Почему проверка домена перестаёт проходить
| Причина | Как проявляется | Что проверить |
|---|---|---|
| Домен переехал на другой адрес | Проверка уходит на старый сервер | Куда сейчас указывает запись домена |
| Путь для проверки перекрыт редиректом | Проверяющий получает не файл, а перенаправление | Правило для служебного пути стоит выше общего редиректа |
| Каталог для проверки удалён или сменил владельца | Файл не создаётся или недоступен на чтение | Существование каталога и права на него |
| Домен снят с обслуживания, а задание осталось | Продление падает на несуществующем имени | Список доменов в задании соответствует реальности |
| Проксирование перед сервером | Проверка не доходит до вашего узла | Режим работы внешнего прокси |
Четвёртая строка коварна: одно неактуальное имя в задании может ронять продление всех остальных доменов, перечисленных вместе с ним.
Как узнавать заранее
Реагировать по факту истечения — значит гарантированно иметь простой. Нужны две независимые проверки.
Проверка 1: срок действия того, что отдаётся
Мониторинг подключается к сервису снаружи и смотрит дату окончания в полученном сертификате. Не файл на диске — именно ответ сервера. Эта проверка ловит и невыполненное продление, и невыполненную перезагрузку одновременно.
Порог предупреждения — минимум 14 дней. Этого хватает, чтобы разобраться без спешки даже если проблема обнаружилась в пятницу.
Проверка 2: результат задания продления
Отдельно контролируется, что задание вообще запускалось и когда завершилось успешно в последний раз. Она ловит случай, когда механизм продления перестал работать целиком и молчит.
Что настроить один раз
- Хук перезагрузки сервиса после успешного продления — закрывает самую частую причину.
- Проверку срока в мониторинге с порогом от 14 дней, снаружи.
- Контроль давности успешного выполнения задания продления.
- Ревизию списка доменов в задании: неактуальные имена удалить.
- Резервную копию сертификатов, ключей и настроек продления.
Последний пункт связан с восстановлением: при переносе сервера настройки автопродления теряются чаще самих сертификатов. Подробнее — в материале о тестовом восстановлении.
Что запомнить
- Продление — это выпуск и перезагрузка сервиса. Второе забывают чаще.
- Диагностику начинают с того, что реально отдаётся наружу, а не с файла на диске.
- Одно неактуальное имя в задании роняет продление остальных доменов.
- Проверять срок нужно снаружи и с порогом от двух недель.
- Отдельно контролируется давность успешного продления — она ловит молчаливый отказ.
Как устроена публикация нескольких сервисов и где там сертификаты — в материале о размещении за одним внешним адресом. Полный список проверок мониторинга — здесь.