Налаштування моніторингу SSL-сертифікатів
Ми налаштовуємо моніторинг SSL-сертифікатів для вашого сайту та інфраструктури: від простих зовнішніх перевірок через Uptime Robot до повноцінного Prometheus-стека з алертами в Telegram або Slack. Наша команда конфігурує сповіщення за 30, 7 та 1 день до закінчення та перевіряє, що автоматичне поновлення дійсно працює. Ми налаштували SSL-моніторинг для понад 50 сайтів, хмарних сервісів та внутрішніх API. Наші клієнти отримують сповіщення завчасно та не стикаються з аварійними поновленнями в позаробочий час або у вихідні дні.
Прострочений SSL-сертифікат робить сайт недоступним для всіх користувачів. Браузери показують сторінку з попередженням, пошукові позиції падають, а довіра клієнтів втрачається. Навіть сайти з Let's Encrypt і автоматичним поновленням іноді стикаються з цією проблемою — автоматика ламається тихо, без сигналів. Моніторинг виявляє проблему завчасно.
Що входить у наш сервіс моніторингу SSL
Ми виконуємо налаштування під ключ. Обсяг включає:
- Аудит усіх доменів та піддоменів, що потребують моніторингу
- Налаштування зовнішнього моніторингу: Uptime Robot, Better Uptime або StatusCake
- Конфігурація Prometheus Blackbox Exporter для внутрішнього моніторингу
- Алерти в Telegram, Slack або email при залишку < 30 днів (warning) та < 7 днів (critical)
- Перевірка certbot timer та тестовий dry-run для Let's Encrypt
- Python-скрипт для самостійної перевірки та звітування
- Документація налаштованого моніторингу та інструкція з реагування
Що відстежує наша система
Моніторинг охоплює всі критичні компоненти SSL-інфраструктури:
- Строк закінчення основного домену та всіх піддоменів
- Wildcard-сертифікати (
*.example.com), якщо вони використовуються - Проміжні сертифікати в ланцюжку CA
- Сертифікати внутрішніх сервісів: API, адмін-панелі, внутрішні домени
Окремі перевірки для кожного піддомену критичні: wildcard не завжди покриває всі піддомени, а деякі сервіси використовують окремі сертифікати.
Prometheus Blackbox Exporter
# blackbox.yml modules: https_check: prober: http timeout: 15s http: method: HEAD tls_config: insecure_skip_verify: false fail_if_not_ssl: true # prometheus.yml 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 Метрика probe_ssl_earliest_cert_expiry містить timestamp закінчення сертифіката.
Alertmanager: правила сповіщень
- 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 SOON!" 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_date = datetime.strptime( cert['notAfter'], '%b %d %H:%M:%S %Y %Z' ).replace(tzinfo=timezone.utc) return { 'hostname': hostname, 'expires_at': expiry_date.isoformat(), 'days_remaining': (expiry_date - datetime.now(timezone.utc)).days, 'issuer': dict(x[0] for x in cert['issuer']), } Скрипт запускається за розкладом через cron або CI/CD і відправляє звіт у Telegram або Slack при залишку менше 30 днів.
Автоматичне поновлення Let's Encrypt
Let's Encrypt + Certbot поновлюють сертифікати автоматично при залишку < 30 днів. Але автоматизація іноді ламається без видимих ознак. Саме тому моніторинг необхідний навіть за наявності автоматичного поновлення.
# Перевірити статус таймера systemctl status certbot.timer # Тестовий прогін без реального поновлення certbot renew --dry-run Ми перевіряємо, що таймер активний, сервіс не заблокований і dry-run проходить успішно. Якщо certbot не може поновити сертифікат — ми виявляємо причину та усуваємо її до закінчення поточного сертифіката.
Зовнішній моніторинг як перший рівень захисту
Найшвидший варіант для старту — підключення до зовнішнього сервісу моніторингу. Uptime Robot (безкоштовний план) перевіряє SSL expiry та надсилає сповіщення за 30, 7 та 1 день до закінчення.
Зовнішній моніторинг доповнює Prometheus-стек: він перевіряє сертифікат так само, як його бачить звичайний браузер, не маючи доступу до вашої внутрішньої мережі.
Як ми виконуємо налаштування
- Аудит усіх доменів та піддоменів, що використовують SSL
- Оцінка поточного стану сертифікатів та строків закінчення
- Налаштування Prometheus Blackbox або зовнішнього моніторингу
- Конфігурація алертів і тестування сповіщень
- Перевірка автоматичного поновлення та документування
| Обсяг | Терміни |
|---|---|
| Зовнішній моніторинг через Uptime Robot | 2–3 години |
| Prometheus Blackbox з алертами | 4–8 годин |
| Повний стек з перевіркою certbot та звітами | 1 робочий день |
Зверніться за консультацією або оцінкою вашої інфраструктури. Ми оглянемо поточний стан і запропонуємо найефективніше рішення для вашого проекту.
Що відбувається, коли сертифікат прострочений
Браузер блокує доступ одразу. Користувач бачить сторінку з попередженням. Більшість одразу закривають вкладку. Пошукові системи знижують сайт у видачі. CRM та API-інтеграції перестають працювати. Відновлення займає від кількох годин до доби. Моніторинг повністю запобігає цій ситуації.
Як ми працюємо
Ми збираємо перелік всіх ваших доменів. Ми перевіряємо поточні строки закінчення. Ми налаштовуємо перший рівень моніторингу. Ми конфігуруємо алерти. Ми перевіряємо автоматичне поновлення. Ми тестуємо кожен alert-канал. Ми передаємо документацію та інструкцію з реагування.







