האם תעודת ה־SSL שלי מוגדרת נכון?
בקצרה: היא מוגדרת נכון כשהתעודה מהימנה (שרשרת מלאה), מכסה כל שם שבו אתם משתמשים (עם www ובלי), מתחדשת אוטומטית הרבה לפני הפקיעה, רק TLS 1.2 ו־1.3 מופעלים, כל בקשת http:// מופנית ל־https://, ו־HSTS מוגדר. המנעול בדפדפן לבדו מוכיח רק את הנקודה הראשונה.
שלבים בקצרה
- בדקו שהשרשרת מהימנה. פתחו את האתר בחלון פרטי בטלפון ובמחשב; לא אמורה להופיע אזהרה.
- בדקו את השמות. התעודה חייבת לכלול גם את yourdomain.com וגם את www.yourdomain.com אם אתם משתמשים בשניהם.
- בדקו תוקף וחידוש. קראו את notAfter ובדקו שהחידוש האוטומטי עובד.
- בדקו גרסאות TLS. אפשרו רק TLS 1.2 ו־TLS 1.3.
- בדקו את ההפניה. http:// חייב להפנות באופן קבוע ל־https://.
- בדקו HSTS. שלחו Strict-Transport-Security ברגע שה־HTTPS עובד בכל מקום.
הקוד וההגדרות נשארים באנגלית.
1. שרשרת מהימנה ומלאה
השרת חייב לשלוח גם את תעודת הביניים. תעודת ביניים חסרה עובדת לעתים קרובות בדפדפנים במחשב, אבל נכשלת בטלפונים ובלקוחות API.
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts </dev/null 2>/dev/null | grep -E 's:|i:|Verify return'חפשו Verify return code: 0 (ok). ב־nginx, ssl_certificate צריך להצביע על קובץ השרשרת המלאה (ב־Let’s Encrypt: fullchain.pem, לא cert.pem).
2. כל שם מכוסה
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
| openssl x509 -noout -ext subjectAltName3. תוקף וחידוש אוטומטי
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
| openssl x509 -noout -enddate
sudo certbot renew --dry-run # if you use certbotHackGrade מסמנת תעודה כסיכון בינוני כשנשארו פחות מ־21 יום לפקיעה, כסיכון גבוה כשנשארו פחות מ־14 יום, וכקריטית ברגע שפקעה או שאינה מהימנה.
4. רק TLS 1.2 ו־1.3
ssl_protocols TLSv1.2 TLSv1.3;SSLProtocol -all +TLSv1.2 +TLSv1.3בדקו שגרסה ישנה נדחית (הפקודה אמורה להיכשל בהתחברות):
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_1 </dev/null5. HTTP מפנה ל־HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]6. HSTS
ברגע שכל דף וכל תת־דומיין עובדים ב־HTTPS, הוסיפו Strict-Transport-Security. קראו קודם את מדריך ה־HSTS (באנגלית): התחילו עם max-age קצר והגדילו אותו. אחר כך תקנו תוכן מעורב (באנגלית).
שאלות נפוצות
האם תעודה חינמית (Let’s Encrypt) פחות מאובטחת מתעודה בתשלום?
לא. ההצפנה זהה. תעודות בתשלום נבדלות בסוג האימות, בתמיכה ובאחריות, לא באיכות ההצפנה.
למה האתר שלי מציג אזהרה רק בחלק מהטלפונים?
בדרך כלל בגלל תעודת ביניים חסרה. הגדירו את השרת עם קובץ השרשרת המלאה.
האם עדיין לתמוך ב־TLS 1.0 או 1.1?
לא. שתיהן הוצאו משימוש (RFC 8996), ודפדפנים מודרניים הסירו את התמיכה בהן.