Перейти к содержимому
ИТ-администрирование

Что проверять, когда истекает срок TLS-сертификата

Почему автопродление молча не срабатывает, диагностический список по шагам, как настроить заблаговременное уведомление и почему перезагрузка сервиса не менее важна, чем сам выпуск.

4 минуты чтенияКоманда RKTSocial

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

Разберём, где рвётся цепочка и как узнавать о проблеме до того, как её увидят посетители.

Продление — это две операции, а не одна

Главное недопонимание. Автопродление состоит из двух шагов, и второй забывают чаще первого.

1. Выпустить новый сертификат   →  файлы на диске обновились
2. Перезагрузить сервис        →  сервис начал их отдавать

Без шага 2 сертификат обновлён, а посетитель видит старый.

Веб-сервер читает сертификат при старте и держит его в памяти. Пока он не перечитает конфигурацию, файл на диске может быть каким угодно свежим — наружу уйдёт тот, что был загружен раньше.

Диагностика по шагам

Порядок важен: он идёт от того, что видит посетитель, к тому, что лежит на диске.

  1. Шаг 1

    Посмотреть, что реально отдаётся наружу

    Не файл на диске, а ответ сервера. Именно здесь видно расхождение между «обновлён» и «отдаётся».

  2. Шаг 2

    Сравнить с датой файла на диске

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

  3. Шаг 3

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

    Таймер может быть выключен, задание удалено при обновлении системы или падать молча.

  4. Шаг 4

    Проверить прохождение проверки домена

    Самая частая причина отказа выпуска: изменился DNS, закрылся путь для проверки, поменялась конфигурация веб-сервера.

  5. Шаг 5

    Проверить полноту цепочки

    Браузеры часто прощают неполную цепочку, а мобильные клиенты и API-клиенты — нет. Ошибка проявляется выборочно.

  6. Шаг 6

    Проверить все имена в сертификате

    Домен продлился, а поддомен, добавленный позже, в сертификат не попал.

Почему проверка домена перестаёт проходить

ПричинаКак проявляетсяЧто проверить
Домен переехал на другой адресПроверка уходит на старый серверКуда сейчас указывает запись домена
Путь для проверки перекрыт редиректомПроверяющий получает не файл, а перенаправлениеПравило для служебного пути стоит выше общего редиректа
Каталог для проверки удалён или сменил владельцаФайл не создаётся или недоступен на чтениеСуществование каталога и права на него
Домен снят с обслуживания, а задание осталосьПродление падает на несуществующем имениСписок доменов в задании соответствует реальности
Проксирование перед серверомПроверка не доходит до вашего узлаРежим работы внешнего прокси

Четвёртая строка коварна: одно неактуальное имя в задании может ронять продление всех остальных доменов, перечисленных вместе с ним.

Как узнавать заранее

Реагировать по факту истечения — значит гарантированно иметь простой. Нужны две независимые проверки.

Проверка 1: срок действия того, что отдаётся

Мониторинг подключается к сервису снаружи и смотрит дату окончания в полученном сертификате. Не файл на диске — именно ответ сервера. Эта проверка ловит и невыполненное продление, и невыполненную перезагрузку одновременно.

Порог предупреждения — минимум 14 дней. Этого хватает, чтобы разобраться без спешки даже если проблема обнаружилась в пятницу.

Проверка 2: результат задания продления

Отдельно контролируется, что задание вообще запускалось и когда завершилось успешно в последний раз. Она ловит случай, когда механизм продления перестал работать целиком и молчит.

Что настроить один раз

  • Хук перезагрузки сервиса после успешного продления — закрывает самую частую причину.
  • Проверку срока в мониторинге с порогом от 14 дней, снаружи.
  • Контроль давности успешного выполнения задания продления.
  • Ревизию списка доменов в задании: неактуальные имена удалить.
  • Резервную копию сертификатов, ключей и настроек продления.

Последний пункт связан с восстановлением: при переносе сервера настройки автопродления теряются чаще самих сертификатов. Подробнее — в материале о тестовом восстановлении.

Что запомнить

  • Продление — это выпуск и перезагрузка сервиса. Второе забывают чаще.
  • Диагностику начинают с того, что реально отдаётся наружу, а не с файла на диске.
  • Одно неактуальное имя в задании роняет продление остальных доменов.
  • Проверять срок нужно снаружи и с порогом от двух недель.
  • Отдельно контролируется давность успешного продления — она ловит молчаливый отказ.

Как устроена публикация нескольких сервисов и где там сертификаты — в материале о размещении за одним внешним адресом. Полный список проверок мониторинга — здесь.