שגיאות תעודת SSL, הסבר ותיקון
בקצרה: שגיאת תעודה אומרת שהדפדפן לא הצליח לוודא שהוא באמת מדבר עם האתר שלכם. הסיבות הנפוצות הן תעודה שפגה (ERR_CERT_DATE_INVALID), תעודה שלא כוללת בדיוק את שם הדומיין (ERR_CERT_COMMON_NAME_INVALID), תעודת ביניים חסרה או תעודה בחתימה עצמית (ERR_CERT_AUTHORITY_INVALID), או שרת שמדבר רק בגרסאות TLS ישנות. פקודת openssl אחת מראה מה מהן; התיקון כמעט תמיד בשרת, וחידוש אוטומטי מונע את רובן.
שלבים בקצרה
- קראו את התעודה מבחוץ. בדקו את התאריכים, השמות והשרשרת עם openssl.
- התאימו את השגיאה לסיבה. פגה, שם שגוי, שרשרת לא מהימנה או בעיית פרוטוקול.
- תקנו בשרת. חדשו, הנפיקו מחדש עם כל שמות המארח, או התקינו את השרשרת המלאה.
- אפשרו TLS 1.2 ו־1.3. כבו את TLS 1.0 ו־1.1 וודאו שלקוחות מודרניים מצליחים להתחבר.
- הפכו את החידוש לאוטומטי. תעודות תקפות היום עד 200 יום, ובקרוב עד 100, כך שהחידוש חייב להיות אוטומטי.
הקוד וההגדרות נשארים באנגלית.
קודם כול: הסתכלו על התעודה מבחוץ
הדפדפן מציג את קוד השגיאה מתחת לאזהרה (לחצו על מתקדם). אחר כך קראו מה השרת שלכם שולח בפועל. הפקודה הזו מראה למי התעודה, מי הנפיק אותה, את התאריכים שלה ואת כל שמות המארח שהיא מכסה:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltNameוהפקודה הזו מראה את השרשרת ואם היא מאומתת (חפשו Verify return code: 0 (ok)):
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
| grep -E '^ *[0-9]+ s:|Verify return code'NET::ERR_CERT_DATE_INVALID: התעודה פגה (או שהשעון שגוי)
תאריך ה־notAfter של התעודה עבר, או, אם רק מבקר אחד רואה את זה, השעון במכשיר שלו שגוי. חדשו את התעודה וטענו מחדש את שרת האינטרנט. אם אתם משתמשים ב־Certbot, ודאו שהחידוש האוטומטי באמת רץ:
sudo certbot renew --dry-run
systemctl list-timers | grep -i certbot
sudo systemctl reload nginx # or: sudo systemctl reload apache2חידוש תעודה הוא כבר לא משימה של פעם בשנה. לפי כללי ה־CA/Browser Forum, תעודות ציבוריות שהונפקו מ־15 במרץ 2026 תקפות לכל היותר 200 יום; מ־15 במרץ 2027 המגבלה היא 100 יום, ומ־15 במרץ 2029 היא 47 יום. חידוש ידני לא יעמוד בקצב, אז השתמשו בתעודות האוטומטיות של חברת האחסון או בלקוח ACME כמו Certbot.
NET::ERR_CERT_COMMON_NAME_INVALID: שם שגוי
התעודה תקפה, אבל לא לשם שבשורת הכתובת. השוו את הכתובת לרשימת ה־subjectAltName מהפקודה הראשונה. סיבות נפוצות: התעודה מכסה את yourdomain.com אבל לא את www.yourdomain.com; נוסף תת־דומיין חדש בלי תעודה; או שהשרת שולח תעודה של אתר אחר באותה כתובת IP (אתר ברירת המחדל). הנפיקו מחדש את התעודה עם כל השמות שאתם משתמשים בהם:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com --expandאם השמות נכונים ועדיין מקבלים תעודה של אתר אחר, ודאו שבלוק ה־server או ה־virtual host של הדומיין הזה כולל שורות תעודה משלו ואת ה־server_name הנכון.
NET::ERR_CERT_AUTHORITY_INVALID: מנפיק לא מהימן או שרשרת שבורה
או שהתעודה בחתימה עצמית (מתאים לבדיקות, אף פעם לא לאתר ציבורי), או שהשרת שולח רק את התעודה שלכם בלי תעודת הביניים שמחברת אותה לשורש מהימן. יש דפדפנים במחשב שמשלימים את החסר בעצמם, ולכן האתר יכול לעבוד אצלכם ולהיכשל בטלפונים או בכלים אחרים. הגדירו תמיד את קובץ השרשרת המלאה:
# nginx
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# Apache 2.4.8+
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
SSLProtocol -all +TLSv1.2 +TLSv1.3בתעודה שנקנתה מספק מסחרי, הורידו את גרסת ה־„full chain” או ה־„bundle” והשתמשו בה במקום קובץ התעודה הבודד.
ERR_SSL_PROTOCOL_ERROR ו־ERR_SSL_VERSION_OR_CIPHER_MISMATCH
הדפדפן והשרת לא הצליחו להסכים על פרוטוקול. סיבות נפוצות: השרת מציע רק TLS 1.0 או 1.1, שדפדפנים עדכניים כבר לא מקבלים; פורט 443 עונה ב־HTTP רגיל; או שהתעודה והמפתח לא תואמים. בדקו אילו גרסאות השרת שלכם מקבל:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_2 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_3 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'שתי הפקודות צריכות להדפיס פרוטוקול וצופן. ה־SSL Configuration Generator של Mozilla נותן הגדרה עדכנית ובדוקה ל־nginx, Apache ושרתים אחרים.
שגיאה 526 של Cloudflare ולולאות הפניה
כש־Cloudflare עומדת לפני האתר יש שתי תעודות: של Cloudflare למבקרים, ושל השרת שלכם לחיבור מ־Cloudflare. במצב Full (strict), שגיאה 526 אומרת שהתעודה בשרת שלכם לא תקפה או שפגה; חדשו אותה, או התקינו Cloudflare Origin Certificate חינמית. הימנעו ממצב Flexible: החיבור לשרת שלכם לא מוצפן, ויחד עם הפניה ל־HTTPS בשרת הוא גורם ל־ERR_TOO_MANY_REDIRECTS.
כשהבעיה אצל המבקר
- תאריך או שעה שגויים במכשיר יוצרים שגיאות תאריך בכל אתר.
- אנטי־וירוס או „בדיקת HTTPS” ארגונית מחליפים תעודות ועלולים לגרום לשגיאות מנפיק.
- דפי התחברות של Wi-Fi ציבורי מיירטים את בקשת ה־HTTPS הראשונה עד שהמבקר מתחבר.
אם רק אדם אחד רואה את השגיאה ובדיקות ה־openssl למעלה תקינות, כנראה מדובר באחת מאלה.
מה HackGrade בודקת
הסריקה החינמית בודקת אם התעודה שלכם מהימנה, מזהירה כשהיא פוקעת בתוך שלושה שבועות, ומסמנת גרסאות TLS ישנות והיעדר הפניה מ־HTTP ל־HTTPS. מסלולי Site, Business ו־Agency חוזרים על הסריקה כל שבוע ושולחים התראה כשמשהו משתנה. רקע נוסף במדריך האם תעודת ה־SSL שלי מוגדרת נכון?
שאלות נפוצות
איך מתקנים NET::ERR_CERT_DATE_INVALID?
חדשו את התעודה וטענו מחדש את שרת האינטרנט. אם זה חוזר, החידוש האוטומטי לא עובד: הריצו „certbot renew --dry-run” או בדקו בפאנל האחסון. אם רק מבקר אחד רואה את זה, כנראה השעון במכשיר שלו שגוי.
למה האתר עובד אצלי במחשב אבל מציג שגיאת תעודה בטלפונים?
בדרך כלל חסרה תעודת הביניים. יש דפדפנים במחשב שמביאים אותה בעצמם, ולקוחות רבים אחרים לא. הגדירו את השרשרת המלאה (fullchain.pem או ה־bundle של הספק).
אפשר להגיד למבקרים ללחוץ „המשך בכל זאת”?
לא. האזהרה קיימת כי אי אפשר לאמת את החיבור, ולהרגיל לקוחות להתעלם ממנה מסכן אותם. תקנו את התעודה.
כמה זמן תעודות SSL תקפות היום?
תעודות ציבוריות שהונפקו מאז 15 במרץ 2026 תקפות לכל היותר 200 יום. המגבלה יורדת ל־100 יום ב־15 במרץ 2027 ול־47 יום ב־15 במרץ 2029, ולכן החידוש חייב להיות אוטומטי.