תעודת SSL שפגה תוקפה היא לא רק תקלה טכנית — היא השבתה מלאה. האתר הופך לבלתי נגיש: הדפדפנים מציגים 'החיבור שלך אינו פרטי', דירוגי ה-SEO צונחים, ואמון הלקוחות מתאדה. אחד הלקוחות שלנו הפסיד 1.4–1.9 אלף דולר ביום אחד של השבתה כי התעודה שלו פגה וחידוש אוטומטי של Let's Encrypt נכשל עקב שגיאת DNS. ניטור פקיעת תעודות הוא אחת המשימות הפשוטות אך היעילות ביותר עם השפעה גבוהה על זמינות. ההתקנה אורכת בין 30 דקות ליום אחד ומונעת השלכות קטסטרופליות.
למה לעקוב אחר תעודות SSL?
גם אם אתה משתמש בחידוש אוטומטי דרך Let's Encrypt, האוטומציה לפעמים נשברת. סיבות: שגיאות DNS, חוסר נגישות לשרת ACME, בעיות הרשאות כתיבה. אם לא תנטר, תגלה רק מהמשתמשים. בסביבה מסחרית, כל שעת השבתה משמעותה הפסדים ישירים. הקמנו ניטור שמתריע לצוות 30, 14, 7 ויום אחד לפני הפקיעה.
אילו תעודות יש לנטר?
- הדומיין הראשי (
example.com) - כל תתי-הדומיינים (אם לא משתמשים ב-wildcard
*.example.com) - תעודות ביניים בשרשרת ה-CA — פקיעתן קריטית באותה מידה
- תעודות לשירותים פנימיים: APIs, לוחות ניהול, כלי 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 ויום אחד לפני הפקיעה. Better Uptime ו-StatusCake פועלים באופן דומה. ההתקנה אורכת 30 דקות. זהו משלים מצוין לניטור Prometheus לגיבוי.
השוואת שיטות וספי התראה
| קריטריון | Blackbox Exporter | סקריפט Python | שירות חיצוני |
|---|---|---|---|
| מורכבות התקנה | בינונית (יום אחד) | נמוכה (0.5 יום) | מינימלית (30 דקות) |
| תלות בתשתית | מלאה | בינונית | אין (חיצוני) |
| התאמה אישית | גבוהה (PromQL, התראות) | גבוהה (כל לוגיקה) | נמוכה (רק התראות סטנדרטיות) |
| עלות | חינם | חינם | $0–$20 לחודש |
| אמינות | גבוהה (אם מוגדר כראוי) | בינונית (תלוי בשרת) | גבוהה (SLA 99.9%) |
ספי התראה:
| ימים שנותרו | רמה | פעולה |
|---|---|---|
| 30 | אזהרה | בדוק חידוש אוטומטי |
| 14 | אזהרה | חדש ידנית אם האוטומציה לא פעלה |
| 7 | קריטי | חדש מיד, הודע לצוות |
| 1 | קריטי | כוח עליון, התערבות ידנית |
טעויות נפוצות בהקמת ניטור SSL
- התעלמות מתעודות wildcard: אם אתה משתמש ב-
# 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ותתי-דומיינים מתווספים דינמית, נטר כל אחד מהם. - בדיקת פורט 443 בלבד: התעודה עשויה להיות תקפה על 443 אך לא על 8443.
- אין התראות לתעודות ביניים: פקיעת תעודת CA קריטית באותה מידה.
- בדיקות נדירות מדי: פעם בשבוע לא מספיק; פעם ביום עדיף.
אוטומציה של חידוש עם Certbot ו-ACM
אם אתה משתמש ב-Let's Encrypt + Certbot, אין צורך בחידוש ידני. אבל ניטור עדיין הכרחי — אוטומציה לפעמים נכשלת.
# Проверить статус certbot таймера
systemctl status certbot.timer
# Тестовый прогон без реального обновления
certbot renew --dry-runCertbot מחדש תעודות כאשר נותרו פחות מ-30 יום. הניטור מופעל ב-< 30 יום — כלומר האוטומציה לא פעלה בזמן.
עבור תעודות המנוהלות דרך AWS Certificate Manager, ניתן להגדיר CloudWatch Alarm על המדד # 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 . פרטים נוספים בתיעוד AWS.
איך לבחור שיטת ניטור?
אם כבר יש לך מערכת Prometheus — Blackbox Exporter נותן התאמה אישית מקסימלית. כשצריך לבדוק במהירות כמה דומיינים — סקריפט Python יספיק. לגיבוי או אם אין לך גישה לתשתית פנימית — שירות חיצוני. אנו עוזרים לך לבחור את האפשרות האופטימלית בייעוץ חינמי.
מה כולל תהליך ההתקנה
כשאתה מזמין את שירות 'הקמת ניטור SSL', אנו מבצעים:
- ביקורת של התעודות הקיימות ושרשראות האמון
- בחירת הכלי האופטימלי (Prometheus/Python/שירות חיצוני) עבור המערכת שלך
- פריסה והגדרה של הניטור (עם קוד במאגר)
- הגדרת התראות בערוצים שצוינו (אימייל, Telegram, Slack)
- תיעוד התהליך והעברת גישה
- תמיכה לאחר ההשקה
לוחות זמנים להתקנה
- Blackbox Exporter + התראות Prometheus — 0.5-1 יום
- סקריפט Python + lambda/cron מתוזמן — 0.5 יום
- שירות חיצוני (Uptime Robot) — 30 דקות
לוחות הזמנים משתנים בהתאם למספר הדומיינים המנוטרים ומורכבות התשתית. אנו מעריכים את הפרויקט ומספקים הערכה מדויקת.
יש לנו שנים של ניסיון בניטור והקמנו התראות SSL עבור יותר מ-50 פרויקטים בקנה מידה משתנה — מדפי נחיתה ועד SaaS בעומס גבוה. צור קשר להערכה חינמית של התשתית שלך. הזמן הקמת ניטור SSL ושכח מבעיות תעודות.







