SSL expiration alert: уведомление об истечении SSL сертификата сайта

5 мин чтения
Обновлено 2 мая 2026

SSL expiration alert — это уведомление о приближающемся истечении срока действия SSL/TLS сертификата сайта. Tracker.ru проверяет дату истечения сертификата при каждой проверке доступности URL и заранее предупреждает, чтобы вы успели обновить сертификат и не получили падение трафика на просроченном HTTPS.

Истёкший SSL-сертификат — самый частый источник «мы ничего не меняли, а сайт перестал открываться» в продакшене. Браузер показывает грозный red-screen NET::ERR_CERT_DATE_INVALID, поисковики деиндексируют HTTPS-версию, мобильные приложения с pinned-сертификатом отваливаются. Алерт «за 30 дней» даёт спокойное окно на ручное продление, «за 7 дней» — это уже последний звонок, когда обновлять надо немедленно.

Как работает

При каждой проверке URL Tracker.ru подключается к серверу по HTTPS, валидирует цепочку сертификатов и читает поле notAfter у leaf-сертификата (это и есть дата истечения). Дата сохраняется в нашей БД (urls.ssl_expired_at). Когда оставшееся количество дней days_left пересекает один из порогов — мы публикуем событие ssl.expiring в шину уведомлений, и оно расходится по выбранным каналам (Telegram, MAX, Email, Webhook).

Логика триггеров:

  • Если days_left опускается до 30 дней — отправляется первый алерт.
  • Если days_left опускается до 14 дней — отправляется второй алерт.
  • Если days_left опускается до 7 дней — отправляется третий алерт.
  • Каждый порог триггерит алерт только один раз для текущего сертификата. Если 30-day алерт уже был отправлен — пересечение того же порога повторно не сработает.
  • При обновлении сертификата (новая дата notAfter больше старой) состояние сбрасывается — следующий цикл алертов начнётся с 30 дней до новой даты истечения.

Каналы доставки

Алерт идёт по тем же каналам, что вы настроили для URL в профиле уведомлений:

  • Telegram — мгновенное сообщение в личку или в группу через нашего бота.
  • MAX-мессенджер — для команд, которые сидят в MAX вместо Telegram.
  • Email — HTML и текстовое представление, тема [Tracker.ru] SSL skoro istechet — example.com.
  • Webhook — HTTP POST с JSON-телом и HMAC-SHA256 подписью, событие ssl.expiring (см. /docs/notifications/webhooks с описанием payload).

Каналы можно включать и выключать индивидуально для каждого URL — например, гонять обычные алерты доступности в Telegram, а SSL-предупреждения дублировать ещё и в Email, чтобы не пропустить в шуме.

Пример сообщения в Telegram

🔒 SSL скоро истечёт: https://example.com
Осталось дней: 14
Истекает: 2026-05-16 10:30:00 (UTC+3)
Не забудьте обновить сертификат

При обновлении (новый сертификат с более поздней датой):

🔒✅ SSL обновлён: https://example.com
Новая дата истечения: 2027-05-16 10:30:00 (UTC+3)

Anti-flap и дедупликация

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

Если URL находится в maintenance window, expiring-алерты подавляются — вы не получите бесполезное «у вас SSL истекает» во время плановой остановки. После выхода из maintenance цикл проверок и алертов возобновляется.

«Renewed»-уведомление приходит даже в maintenance — это успешное событие, которое не мешает плановым работам и подтверждает, что обновление сертификата прошло без проблем.

Как отключить

В настройках URL (/my/urls/{id}) есть переключатель «SSL alerts». Если выключить — Tracker.ru перестанет слать SSL expiring/renewed-уведомления для этого URL. Сама проверка SSL продолжит работать (дата notAfter будет обновляться в БД и видна в карточке URL), просто без уведомлений.

Это удобно, если SSL-управление полностью автоматизировано через Let's Encrypt + cron, и алерты вам только мешают.

Сравнение с фокусными SSL-сервисами

Tracker.ru — это полноценный мониторинг доступности с SSL-проверкой как одной из метрик, а не отдельный «SSL monitoring only» сервис. Если выбираете между ним и фокусными SSL-сервисами:

  • rechecker.ru — российский SSL-monitor с Telegram-алертами, фокус только на сертификатах. Без проверок доступности, без heartbeat, без status-страниц.
  • ssldetect.com / certimon.com — англоязычные SaaS, фокус на SSL/TLS-аудите (chain validation, протоколы, ciphers). Дороже за счёт глубины анализа, но без uptime-мониторинга.

Tracker.ru подойдёт, если вам нужен SSL expiring-алерт в комплекте с обычным uptime-мониторингом, статус-страницами и heartbeat — без необходимости плодить подписки на 4 разных сервиса.

Troubleshooting

Алерт не пришёл, хотя сертификат скоро истекает. Проверьте:

  1. Включены ли SSL-алерты в настройках URL (/my/urls/{id} → SSL alerts).
  2. Настроен ли хотя бы один канал уведомлений (Telegram, MAX, Email или Webhook). Если все каналы отключены — алерт не уйдёт.
  3. URL не находится в maintenance window — expiring-уведомления подавляются на время плановых работ.
  4. Сертификат действительно валиден и Tracker.ru может его прочитать. Если URL отдаёт ошибку SSL handshake (например, expired CA или wrong hostname) — алерт не будет триггернут, потому что мы не сможем определить дату истечения. Проверьте поле ssl_error в карточке URL.

Алерт пришёл слишком поздно — сертификат истёк через 5 дней. Возможно, URL только что добавлен и первая проверка SSL зафиксировала уже малое количество дней. В этом случае все три порога (30/14/7) могут не сработать (потому что мы пропустили момент пересечения 30-day и 14-day). Решение: для свежедобавленных URL Tracker.ru шлёт алерт сразу, если days_left уже ≤ 30 при первой успешной SSL-проверке.

Получил два алерта подряд за 7 дней. Это не должно происходить — дедуп per-threshold должен подавить второй. Если повторяется регулярно, напишите в support@tracker.ru с url_id и таймстампами — посмотрим логи статус-воркера.

Связанные