Почему 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 проверок.