Настройка мониторинга срока истечения SSL-сертификатов

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

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Настройка мониторинга срока истечения SSL-сертификатов

Безопасность веб-приложенийПростой~1 день
Часто задаваемые вопросы

Просроченный SSL-сертификат — это не просто техническая ошибка, а полноценная авария. Сайт становится недоступным: браузеры выводят страницу «Ваше подключение не защищено», SEO-позиции падают, доверие клиентов теряется. Один из наших клиентов потерял $1.4k–1.9k за день простоя, потому что сертификат истёк, а автоматика Let's Encrypt не сработала из-за ошибки DNS. Мониторинг срока истечения — одна из самых простых и эффективных задач с высоким влиянием на доступность. Настройка занимает от 30 минут до одного дня, а предотвращает катастрофические последствия.

Причины отслеживать SSL-сертификаты

Даже если вы используете автоматическое продление через Let's Encrypt, автоматика иногда ломается. Причины: ошибки DNS, недоступность ACME-сервера, проблемы с правами на запись. Если не мониторить, вы узнаете о проблеме только от пользователей. В коммерческой среде каждый час простоя — это прямые убытки. Мы настраиваем мониторинг, который оповестит команду за 30, 14, 7 и 1 день до истечения.

Какие сертификаты подлежат мониторингу

  • Основной домен (example.com)
  • Все поддомены (если не используется wildcard *.example.com)
  • Промежуточные сертификаты в цепочке (CA chain) — их истечение тоже критично
  • Сертификаты внутренних сервисов: API, админки, DevOps-инструменты

Настройка мониторинга SSL за день

Мы используем комбинацию методов: Prometheus + Blackbox Exporter для опенсорс-стеков, Python-скрипты для кастомных сценариев и Uptime Robot для дублирования.

Prometheus Blackbox Exporter

# blackbox.yml modules: https_check: prober: http timeout: 15s http: valid_status_codes: [] method: HEAD tls_config: insecure_skip_verify: false fail_if_ssl: false fail_if_not_ssl: true 
# prometheus.yml scrape config
scrape_configs:
  - job_name: 'ssl_certificate_check'
    metrics_path: /probe
    params:
      module: [https_check]
    static_configs:
      - targets:
          - https://example.com
          - https://api.example.com
          - https://admin.example.com
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox-exporter:9115

Алерт в Prometheus:

- alert: SSLCertificateExpiringSoon
  expr: probe_ssl_earliest_cert_expiry - time() < 30 * 24 * 3600
  labels:
    severity: warning
  annotations:
    summary: "SSL cert on {{ $labels.instance }} expires in {{ $value | humanizeDuration }}"
- alert: SSLCertificateExpiryCritical
  expr: probe_ssl_earliest_cert_expiry - time() < 7 * 24 * 3600
  labels:
    severity: critical
  annotations:
    summary: "SSL cert on {{ $labels.instance }} expires in {{ $value | humanizeDuration }}!"

Python скрипт для мониторинга

import ssl
import socket
from datetime import datetime, timezone


def check_ssl_expiry(hostname: str, port: int = 443) -> dict:
    context = ssl.create_default_context()
    with socket.create_connection((hostname, port), timeout=10) as sock:
        with context.wrap_socket(sock, server_hostname=hostname) as ssock:
            cert = ssock.getpeercert()
            expiry_str = cert['notAfter']
            expiry_date = datetime.strptime(expiry_str, '%b %d %H:%M:%S %Y %Z')
            expiry_date = expiry_date.replace(tzinfo=timezone.utc)
            days_remaining = (expiry_date - datetime.now(timezone.utc)).days
            return {
                'hostname': hostname,
                'expires_at': expiry_date.isoformat(),
                'days_remaining': days_remaining,
                'issuer': dict(x[0] for x in cert['issuer']),
                'subject': dict(x[0] for x in cert['subject'])
            }

Скрипт удобно запускать по расписанию через cron или AWS Lambda. Мы используем его для сервисов, которые не хочется выставлять в интернет.

Внешние сервисы: Uptime Robot, Better Uptime

Простейший вариант — внешние сервисы. Uptime Robot (бесплатный план) проверяет SSL и присылает уведомления за 30, 7 и 1 день. Better Uptime и StatusCake работают аналогично. Настройка занимает 30 минут. Подходит как дополнение к Prometheus-мониторингу для резервирования.

Сравнение методов и пороги оповещения

Критерий Blackbox Exporter Python скрипт Внешний сервис
Сложность настройки Средняя (1 день) Низкая (0.5 дня) Минимальная (30 мин)
Зависимость от инфраструктуры Полная Средняя Нет (внешний)
Кастомизация Высокая (PromQL, алерты) Высокая (любая логика) Низкая (только стандартные алерты)
Стоимость Бесплатно Бесплатно $0–$20/мес
Надёжность Высокая (при правильной настройке) Средняя (зависит от хоста) Высокая (SLA 99.9%)

Пороги оповещения:

Осталось дней Уровень Действие
30 Warning Проверить автоматическое продление
14 Warning Вручную продлить, если авто не сработало
7 Critical Немедленно продлить, уведомить команду
1 Critical Форс-мажор, ручное вмешательство

Типичные ошибки при настройке мониторинга SSL

  • Игнорирование wildcard-сертификатов: если используете *.example.com, а поддомены добавляются динамически, мониторить нужно каждый.
  • Проверка только одного порта: сертификат может быть валиден на 443, но не на 8443.
  • Отсутствие алертов для промежуточных сертификатов: истечение CA-сертификата так же критично.
  • Слишком редкие проверки: раз в неделю — недостаточно, лучше раз в сутки.

Автоматизация продления через Certbot и ACM

Если используете Let's Encrypt + Certbot, ручное продление не нужно. Но мониторинг всё равно необходим — автоматика иногда ломается.

# Проверить статус certbot таймера
systemctl status certbot.timer
# Тестовый прогон без реального обновления
certbot renew --dry-run

Certbot обновляет сертификаты при остатке < 30 дней. Мониторинг срабатывает при < 30 дней — значит, автоматика не сработала вовремя.

Для сертификатов, управляемых через AWS Certificate Manager, можно настроить CloudWatch Alarm на метрику DaysToExpiry. Подробнее в документации AWS.

Как выбрать метод мониторинга?

Если у вас уже есть Prometheus-стек — Blackbox Exporter даст максимальную кастомизацию. Когда нужно быстро проверить пару доменов — хватит Python-скрипта. Для резервирования или если нет доступа к внутренней инфраструктуре — внешний сервис. Мы помогаем выбрать оптимальный вариант на консультации.

Что включает процесс настройки

При заказе услуги «Настройка мониторинга SSL» мы выполняем:

  • Аудит текущих сертификатов и цепочек доверия
  • Выбор оптимального инструмента (Prometheus/Python/внешний сервис) под ваш стек
  • Развёртывание и конфигурация мониторинга (с кодом в репозитории)
  • Настройка алертов с указанием каналов (email, Telegram, Slack)
  • Документирование процесса и передача доступов
  • Поддержка в течение 30 дней после запуска

Сроки настройки

  • Blackbox Exporter + Prometheus алерты — 0.5-1 день
  • Python скрипт + scheduled lambda/cron — 0.5 дня
  • Внешний сервис (Uptime Robot) — 30 минут

Сроки варьируются в зависимости от количества отслеживаемых доменов и сложности инфраструктуры. Мы оцениваем проект и называем точное время.

Мы работаем с мониторингом более 5 лет, настроили SSL-алерты для 50+ проектов разного масштаба — от лендингов до высоконагруженных SaaS. Свяжитесь с нами для оценки вашей инфраструктуры. Закажите настройку SSL-мониторинга и забудьте о проблемах с сертификатами.

SSL/TLS на Wikipedia

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060