Почему SSL-сертификат истекает «внезапно» и как настроить автопродление, которое не подведёт
4 мин чтения
Почему SSL-сертификат истекает «внезапно» и как настроить автопродление, которое не подведёт

Почему SSL-сертификат истекает «внезапно» и как настроить автопродление, которое не подведёт

Сертификаты не истекают внезапно — у каждого дата окончания известна с момента выпуска. И всё же «у нас вдруг истёк сертификат» остаётся одной из самых частых причин простоя. Разбираем, как именно ломается автопродление, почему это происходит тихо и как построить схему, в которой сертификат не истечёт незамеченным.

Сначала о масштабе проблемы. Срок жизни сертификатов последовательно сокращается: у бесплатного Let's Encrypt это 90 дней, у платных — максимум 398, и индустрия объявила курс на дальнейшее сокращение. Логика понятна — короче срок, меньше окно злоупотребления утёкшим ключом, — но следствие для владельца сайта одно: продление обязано быть автоматическим, а автоматика обязана быть под наблюдением. Ручное «продлю в календаре раз в год» умерло как класс.

Семь способов, которыми ломается автопродление

1. Валидация перестала проходить. Самая частая причина. Для продления Let's Encrypt должен убедиться, что вы контролируете домен: либо запросом на ваш сайт по HTTP (порт 80), либо DNS-записью. Закрыли 80-й порт «для безопасности», включили редирект, который ломает путь /.well-known/, переехали за прокси — валидация падает, продление молча не происходит.

2. Сайт переехал, автоматика осталась на старом сервере. Классика переездов: новый хостинг, файлы перенесли, а certbot с его расписанием остался в прошлой жизни. Сертификат доживает свои 60–90 дней и умирает. Про полный чек-лист переезда у нас есть отдельная статья — пункт про сертификаты там не случайно.

3. Продлилось, но не применилось. Хитрый вариант: новый сертификат лежит на диске, а веб-сервер продолжает отдавать старый из памяти — перезагрузка конфигурации после продления не настроена или падает. Снаружи неотличимо от «не продлилось».

4. Письма-предупреждения больше не приходят. Многие годами полагались на письма Let's Encrypt «сертификат истекает через 20 дней» — в июне 2025 года их рассылку отключили насовсем. Мы разбирали это в статье про Let's Encrypt: официальная рекомендация — использовать внешний мониторинг сроков. Если ваша «страховка» — почта, её больше нет.

5. Wildcard и DNS-валидация. Сертификаты на *.domain.ru продлеваются только через DNS-запись, которую надо создавать при каждом продлении. Это работает автоматически, только если у DNS-провайдера есть API и он настроен; сменили DNS-хостинг — автоматика отвалилась.

6. Лимиты и сбои удостоверяющего центра. Редко, но бывает: упёрлись в rate limit после серии неудачных попыток, или УЦ был недоступен в момент продления. Однократный сбой не страшен — страшно, что о нём никто не узнал и попытки кончились.

7. Забытые поддомены и сервисы. Основной сайт под присмотром, а api.domain.ru, mail.domain.ru, панель на поддомене — нет. Сертификаты там ставились «когда-то кем-то» и истекают по собственному расписанию. Отдельная боль — сертификат на почтовом сервере: его истечение ломает отправку писем, и связь с сайтом никто не проводит.

Почему это всегда «внезапно»

У всех семи сценариев общая черта: автоматика ломается тихо, за недели до последствий. Между «продление перестало работать» и «браузер показал красный экран» проходит до трёх месяцев тишины — и всё это время кажется, что всё в порядке. Реальную историю такого сбоя мы разобрали в кейсе об истёкшем сертификате.

Как настроить продление, которое не подведёт

Шаг 1. Убедитесь, что автопродление вообще есть. На виртуальном хостинге это галочка в панели («автовыпуск Let's Encrypt») — проверьте, что она включена для всех доменов и поддоменов, а не только для основного. На VPS с certbot проверьте таймер и сделайте сухой прогон:

systemctl list-timers | grep certbot   # таймер продления существует?
certbot renew --dry-run                # проходит ли валидация прямо сейчас?

Сухой прогон — самая недооценённая команда в этой истории: она проверяет весь путь продления, не трогая настоящий сертификат. Упал dry-run — упадёт и боевое продление через месяц.

Шаг 2. Проверьте перезагрузку веб-сервера. В конфигурации продления должен быть хук, который перечитывает конфигурацию nginx или Apache после выпуска нового сертификата, — иначе получите сценарий №3.

Шаг 3. Составьте полный список сертификатов. Не только сайт: поддомены, API, почта, панели. Всё, что слушает TLS, имеет сертификат, и каждый когда-нибудь истечёт. Как вручную посмотреть срок и цепочку любого из них — в инструкции по проверке сертификата.

Шаг 4. Поставьте независимый контроль снаружи. Ключевое слово — независимый: контроль не должен жить на том же сервере, что и автоматика, которую он контролирует. Проверка SSL-сертификата с интервалом раз в день смотрит на сертификат так, как его видят посетители, и предупреждает заранее — за срок, за который вы успеете спокойно разобраться, почему не сработало продление. Это страховка ровно от всех семи сценариев сразу: ей всё равно, почему сертификат не продлился.

Мини-чек-лист

Проверка Как часто
certbot renew --dry-run (или галочка в панели хостинга) После любого переезда, смены DNS, правок конфигурации
Хук перезагрузки веб-сервера после продления Один раз настроить, проверять при изменениях
Инвентаризация: все домены, поддомены, почта Раз в квартал
Внешний мониторинг срока и цепочки Автоматически, раз в день
Пруфен — та самая внешняя страховка

Проверка SSL в Пруфене ежедневно контролирует срок, цепочку и соответствие домена для каждого сертификата — сайта, поддоменов, API. Предупреждение приходит заранее в Email, Telegram, Макс или звонком, пока проблема ещё решается за пять минут. Бесплатного тарифа хватает на 5 проверок.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт