תעודת SSL לפני תפוגה – איך לחדש בלי השבתה

תעודה שפגה תחסום את האתר לחלוטין. מתחילים לטפל לפחות 7 ימים לפני, לא ביום האחרון.

תעודת SSL פגה אינה אזהרה – היא חסימה. דפדפנים מציגים מסך אדום ומסרבים להמשיך, גוגלבוט לא מסוגל לסרוק, ושירותי תשלום מחזירים שגיאת SSL. גם אם נראה ש"יש עוד שבוע", התחל לטפל בחידוש מיד – תהליך החידוש נכשל לעיתים בגלל הגדרות שגויות, ולוקח 1–3 ימים לתקן.

למה זה משנה

תעודות Let's Encrypt תקפות 90 יום, חידוש אוטומטי אמור להתבצע ב-30 הימים האחרונים. כשהאודיט מציג "תעודה פגה תוך 7 ימים", פירוש הדבר שהחידוש האוטומטי נכשל לפחות 23 ימים. הסיבה לרוב היא תקלת הגדרות (חסימה של /.well-known/acme-challenge/, תיקיית root לא מותאמת, או DNS לא מעודכן). אתר שייפול בגלל תפוגת SSL יחווה: דפדפנים יסרבו להציג, אפליקציה ניידת תפסיק לעבוד עם API, וגוגל יוריד את האתר מהאינדקס תוך כמה ימים. לקוחות יראו "אתר לא בטוח" וברירת המחדל היא לא להמשיך.

איך לזהות

הפעל מהשורה:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

השדה notAfter מציג את תאריך התפוגה. כלי שני: https://www.sslshopper.com/ssl-checker.html. כלי שלישי, חינמי וטוב במיוחד למעקב: https://crt.sh/?q=example.com – מציג את כל התעודות שהונפקו עבור הדומיין.

איך לתקן

תרחיש 1 – cPanel/AutoSSL: גש ל-cPanel > SSL/TLS Status. סמן את הדומיין, לחץ "Run AutoSSL". אם נכשל, לחץ "View Logs" וחפש שגיאת DCV (Domain Control Validation). תיקון נפוץ: ודא ש-/.well-known/acme-challenge/ לא חסום ב-.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^\.well-known/acme-challenge/ - [L]
</IfModule>

תרחיש 2 – Certbot ידני (VPS):

sudo certbot renew --dry-run
# אם הצליח:
sudo certbot renew
sudo systemctl reload apache2  # או nginx

הוסף ל-cron כדי שיתחדש אוטומטית פעמיים ביום:

0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

תרחיש 3 – Plesk: Domains > example.com > SSL/TLS Certificates > "Issue free Let's Encrypt certificate". אם פעיל אבל לא מתחדש, סמן "Renew certificate" ידנית.

טעויות נפוצות

טעות ראשונה: להמתין לשנייה האחרונה. תעודה תפוגה מעבר ל-72 שעות לפני שמטפלים בה גורמת ל-Google PageSpeed להסיר אותך מתוצאות, ושחזור אינדקס לוקח 1–2 שבועות. טעות שנייה: לחדש רק את הדומיין הראשי ולשכוח www. או סאבדומיינים. תעודה ל-example.com בלבד תיכשל ב-www.example.com אם המבקר הולך לשם ישירות. הוסף את כל הסאבדומיינים בעת ההנפקה: certbot -d example.com -d www.example.com -d shop.example.com. טעות שלישית: לסמוך על "Cloudflare מטפל ב-SSL". Cloudflare מחזיק תעודה לקצה הצרכן, אבל ה-Origin Server שלך עדיין צריך תעודה תקפה – אחרת מצב Full (Strict) ייכשל.

בדיקה לאחר תיקון

הרץ שוב את הפקודת openssl שלמעלה ובדוק שתאריך notAfter מורחק לפחות 60 יום. גלוש בכרום לאתר במצב גלישה פרטית – המנעול חייב להיות שלם בלי אזהרות. גש ל-SSL Labs ובדוק שהציון נשמר A או A+. הגדר התראת Uptime Monitor או UptimeRobot להתראה 14 יום לפני תפוגה הבאה.

שווה גם להבין למה תהליך החידוש האוטומטי של Let's Encrypt עלול להיכשל באתרים מסוימים: שימוש ב-CDN שמסנן את /.well-known/acme-challenge, שינוי IP של השרת בלי עדכון DNS, או הפעלת תוסף "Coming Soon" שמסיט את כל התנועה לעמוד אחד שלא משרת את האימות. אם החידוש נכשל פעמיים ברציפות, בדוק את אלה לפני שמחפשים סיבות מורכבות יותר. כשמדובר ב-Multi-domain certificates, חידוש נכשל לעיתים כי אחד הדומיינים אינו מצביע יותר לשרת – Let's Encrypt דורש שכל הדומיינים בתעודה יהיו ניתנים לאימות.

טיפ: Cloudflare DNS מציע התראת "Certificate expiring soon" חינמית. שירות https://certificatemonitor.org עושה את זה גם, ושולח מייל 30 יום לפני התפוגה.