מדריך · 3 דקות קריאה

האם תעודת ה־SSL שלי מוגדרת נכון?

בקצרה: היא מוגדרת נכון כשהתעודה מהימנה (שרשרת מלאה), מכסה כל שם שבו אתם משתמשים (עם www ובלי), מתחדשת אוטומטית הרבה לפני הפקיעה, רק TLS 1.2 ו־1.3 מופעלים, כל בקשת http://‎ מופנית ל־https://‎, ו־HSTS מוגדר. המנעול בדפדפן לבדו מוכיח רק את הנקודה הראשונה.

עודכן ב־ · HackGrade

שלבים בקצרה

  1. בדקו שהשרשרת מהימנה. פתחו את האתר בחלון פרטי בטלפון ובמחשב; לא אמורה להופיע אזהרה.
  2. בדקו את השמות. התעודה חייבת לכלול גם את yourdomain.com וגם את www.yourdomain.com אם אתם משתמשים בשניהם.
  3. בדקו תוקף וחידוש. קראו את notAfter ובדקו שהחידוש האוטומטי עובד.
  4. בדקו גרסאות TLS. אפשרו רק TLS 1.2 ו־TLS 1.3.
  5. בדקו את ההפניה. http://‎ חייב להפנות באופן קבוע ל־https://‎.
  6. בדקו HSTS. שלחו Strict-Transport-Security ברגע שה־HTTPS עובד בכל מקום.

הקוד וההגדרות נשארים באנגלית.

1. שרשרת מהימנה ומלאה

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

Terminal
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. כל שם מכוסה

Terminal
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
  | openssl x509 -noout -ext subjectAltName

3. תוקף וחידוש אוטומטי

Terminal
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 certbot

HackGrade מסמנת תעודה כסיכון בינוני כשנשארו פחות מ־21 יום לפקיעה, כסיכון גבוה כשנשארו פחות מ־14 יום, וכקריטית ברגע שפקעה או שאינה מהימנה.

4. רק TLS 1.2 ו־1.3

nginx
ssl_protocols TLSv1.2 TLSv1.3;
Apache
SSLProtocol -all +TLSv1.2 +TLSv1.3

בדקו שגרסה ישנה נדחית (הפקודה אמורה להיכשל בהתחברות):

Terminal
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_1 </dev/null

5. HTTP מפנה ל־HTTPS

nginx
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}
.htaccess
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), ודפדפנים מודרניים הסירו את התמיכה בהן.

מקורות

מדריכים קשורים

חינם · מיידי · בלי הרשמה

גלו את הציון שלכם לפני שמישהו אחר יגלה.

סריקה פסיבית בלבד. שום בדיקה חודרנית לא מתבצעת בלי האישור שלכם.

מתחילים בחינם. תוכניות בתשלום מ־12$ לחודש, או דוח חד־פעמי ב־29$. למחירים