SSL הוא מונח שאנחנו שומעים היום כמעט באופן יומיומי, בין אם מדובר על הבאג בגרסת Chrome האחרונה, פרצות אבטחה מפורסמות שיצאו לאחרונה (Poodle, HeartBleed וכו') או בשימוש יומיומי אל מול אתרי מסחר.
מה זה בעצם SSL?
SSL הוא הסטנדרט המקובל להעברת מידע באינטרנט.
מטרת ה-SSL הוא להצפין "שיחה" בין 2 מחשבים בצורה שתמנע מצד שלישי "להאזין" לשיחה.
לדוגמא: מחשב אחד יהיה המחשב הביתי שלנו, והמחשב השני יהיה שרת האינטרנט ממנו אנחנו מנסים לרכוש מוצר.
כלומר, שירות ה-SSL לא הופך את האתר עצמו למאובטח יותר, אלה רק את התקשורת אליו למוצפנת.
מה שאומר בעצם שבמידה וקיימת פרצת אבטחה ברמת הקוד לאתר – תעודת ה-SSL לא תעזור לו.
נפשט את זה אפילו יותר: תעודת SSL לא תמנע פריצה באתר אליו אתם פונים והשגת הפרטים שלכם, אלה רק תמנע שהפרטים שלכם יושגו ע"י "צד שלישי" כלשהו ש"יאזין" לשיחה שלכם אל מול האתר ממנו אתם רוכשים.
מי הוא אותו צד שלישי בפועל?
לרוב ייתכן ויהיה מדובר בוירוס הקיים על המחשב שלכם (או בצד השרת) אשר ינסה לקלוט מידע רגיש (כמו מספר כרטיס אשראי)
רגע, בלי שימוש בפרוטוקול ה-SSL התקשורת לא מוצפנת?
אולי התשובה מפתיעה – אבל לא, המידע באינטרנט (ולצורך הדוגמא, הגלישה) מועברת כברירת מחדל באופן שאינו מוצפן ("Clear Text"), זוהי בעצם הגלישה ה"רגילה" שאתם מבצעים (לכל אתר שאינו מצפין את התקשורת שלו).
כלומר, כל אחד שרוצה יכול (עקרונית כמובן, עדין צריך לדעת כיצד לעשות זאת) לעקוב אחר התקשורת שלכם ולהבין לאיזה אתרים ניגשתם ומה בדיוק עשיתם בהם.
אם אפשר לפרוץ לאתר עם תעודת SSL.. מה עושים? מפסיקים לקנות באינטרנט?
חשוב לי לענות על השאלה הזו (למרות שבפועל זה לא נושא המאמר), חשוב לזכור- באבטחת מידע יש היבטים רבים, אחד מהם הוא הצפנת התקשורת ואחר- אבטחת השרת והאפליקציה עליו יושב האתר.
כלומר, בדיוק כפי שלא תתנו את מספר כרטיס האשראי שלכם בחנות רחוב שנראת מפוקפקת, ובדיוק כפי שתעדיפו לבצע את הקניות שלכם בסופרמרקט מוכר – גם את הרכישות שלכם באינטרנט אין לבצע באתר מפוקפק או כזה שאינו מומלץ.
אגב, גם במקרה שכרטיס האשראי שלכם נגנב באמצעות עסקה אינטרנטית – הכול בסדר, אתם מבוטחים באופן מלא ע"י חברת האשראי.
כיצד עובד SSL?
באופן כללי, התקשורת בין המחשב שלכם לשרת מתבצעת על בסיס מפתחות.
בדיוק כפי שהדלת שלכם בבית "מאמתת" או נותנת לכם אישור כניסה באמצעות המפתח שמתאים למנעול, גם במקרה של שרתי אינטרנט, 2 הגורמים (אנחנו והשרת אליו אנחנו יושבים) מחליפים "מפתחות" (או מפתח ומנעול, אם יותר קל לחשוב על זה ככה).
איך בדיוק זה מתבצע?
אם נחזור לדוגמת הבית, על מנת שנוכל להכנס לבית אנו זקוקים מראש שיהיה לנו מפתח הכניסה.
באינטרנט, הרעיון דומה – ננסה לתאר את התהליך:
- הגולש ניגש לאתר בפרוטוקול HTTPS ומבקש מהשרת ליצור תקשורת מאובטחת
- השרת בתגובה שולח לגולש מפתח (ציבורי), ולאחר שהגולש מקבל זאת, השרת מתחיל לבדוק את תאימות המפתח שהגולש מחזיק (המפתח הציבורי) אל מול המפתח הפרטי הקיים בשרת (כך שבמידה והוא מגלה שהמפתח שהגולש מחזיק הוא לא המפתח המקורי שנשלח, הוא יבין שמשהו לא תקין וינתק את התקשורת).
- במידה והשרת מצא כי המפתח הציבורי (הקיים אצל הגולש) והמפתח הפרטי (הקיים אצל השרת) תואמים, יוקם ערוץ התקשורת המאובטח בין הגולש והשרת.
מהי ההצפנה?
"על רגל אחת", הצפנת המידע משמעותה שליחת מידע על פי מפתח כלשהו כך שהצד השני יוכל לפענח את מה שמוצפן.
למשל, אם נשלח למישהו מכתב הכתוב בשפת ה-ב' (שפת הבי"ת בויקיפדיה), אנחנו נצטרך את ה"מפתח" על מנת להבין מה הוצפן (במקרה של שפת הבי"ת: מורידים את האות ב' הקיימת אחרי כל תנועה).הצפנות בהן משתמשים ב-SSL הן "מעט" מורכבות יותר ומבוססות בעיקרן על "הצפנה א-סימטרית" (לא ארחיב על כך במאמר זה).
SSL כאמצעי נגד התחזות
עד עתה סקרנו את פרוטוקול ה-SSL כאמצעי המונע מצד שלישי להאזין לתקשורת שלנו, אך מרכיב נוסף וחשוב בתעודות SSL הוא שהתעודה משמשת גם כאמצעי נגד התחזות.
מכיוון שגלשנו לכתובת מסויימת (לדוגמא: https://www.hostingblog.co.il) אנחנו "מצפים" שברגע שניגש לבצע רכישה בכתובת זו, לא יבצעו לנו הפניה (Redirect) למקום אחר.
בנוסף, במהלך "החלפת המפתחות" (המשמשת לבניית התקשורת המוצפנת) השרת שולח לנו גם פרטים נוספים על תעודת ה-SSL:
- עבור איזה אתר הונפקה התעודה
- מי המנפיק
- עד איזה תאריך התעודה הונפקה
ונתונים נוספים – וזאת, על מנת שנוכל לדעת בוודאות כי האתר אליו התכוונו לגלוש הוא אכן האתר בו אנו נמצאים.
מעבר לכך, ישנן תעודות SSL שלא רק מוודאות שהאתר שבו אנחנו גולשים הוא האתר הנכון, הם גם בודקות עבורנו שהגוף המנהל את האתר הוא אכן הבעלים שלו.
לדוגמא, באמצעות התמונה הבאה אנו יכולים לדעת כי הגוף העומד מאחורי https://portal.spd.co.il הוא בעצם חברת SPD Hosting LTD:
מיהו אותו גוף מאשר?
הגוף המאשר (Certificate authority) הוא גוף (חברה מסחרית) אשר הוסמכו על ידי הדפדנים השונים (FireFox, Explorer, Chrome וכו') להנפקת תעודות SSL.
או במילים אחרות, חברות ה-CA משלמות כסף רב (אשר למעשה, מאפשר את קיום פיתוח הדפדפנים השונים) על מנת שהדפדפנים יטמיעו את התעודות הציבוריות שלהם בדפדפנים.
כל תעודת SSL המונפקת ע"י הספק "מקושרת" למעשה לתעודות הקיימות בדפדפן.
במידה והתעודה לא היתה קיימת בדפדפן, תעודת ה-SSL אומנם היתה עובדת מבחינת ההצפנה, אך לא היתה עבודה מבחינת "אמצעי כנגד התחזות"- וזאת מכיוון ששום גורם צד שלישי לא אישר אותה.
דבר זה מסביר למעשה גם את האפשרות של הנפקת תעודות "Self signed" – כלומר, במידה ומדובר באפליקציה פנים ארגונית – אין לנו צורך שגורם צד שלישי יאשר לנו שאנחנו אכן הארגון, ולכן ניתן להנפיק תעודה "עצמאית" – כזו שנחתמה על הגורם שאנחנו הכי סומכים, אנחנו.
החלטתי שאני צריך תעודת SSL, מה עושים?
אוקי, אז הבנו פחות או יותר מה עושה הפרוטוקול, והבנו שבמידה ויש לנו אתר מסחר אנחנו צריכים תעודת SSL – מה הלאה?
ראשית, עלינו לוודא כי חברת אחסון האתרים שלנו מסוגלת לתמוך ב-SSL, לשם כך נזדקק לאחד מ-2:
- כתובת IP "פרטית" שתסופק לנו ע"י חברת האחסון:
"פרטית" במובן שרק המשתמש שלנו ישב על אותה הכתובת.
אין מדיניות אחידה בקרב חברות האחסון בנושא הקצאת כתובות IP, בחלק מהחברות יגבו תשלום על ההקצאה, בחלק אחר לא יגבו תשלום על הקצאה בשרתים שיתופיים אלה רק בשרתים יעודיים (או וירטואלים).ברמת העקרון שיטה זו היא השיטה העדיפה מכיוון שפרוטוקול SNI (עליו נסביר מיד) אינו נתמך בדפדפנים ישנים (דוגמאת Explorer 6).
יחד עם זאת, סביר להניח שתעודות SSL מודרניות לא יעבדו גם כך בדפדפנים ישנים (דוגמאת Explorer 6) מכיוון שפרוטוקולי ההצפנה שהדפדפנים הישנים "יודעים" לדבר איתם כבר לא נתמכים ע"י השרת (מכיוון שהם נפרצו בעבר ואינם מאובטחים). - עבודה מול הרחבת SNI:
מדובר בהרחבה "חדשה" (באופן יחסי) עבור פרוטוקול ה-SSL. בעבר- על מנת להקים תקשורת מצופנת האתר היה חייב להשתמש בכתובת IP פרטית, יחד עם זאת, מאז יציאת הרחבת ה-SNI אין צורך בכך וניתן לעבוד גם באמצעות כתובת IP שיתופית.
SNI הן ראשי תיבות של Server Name Indication, בצורה ה"רגילה" (כלומר, התקנת ה-SSL על כתובת IP פרטית) היה צורך בכתובת IP פרטית מכיוון שפרוטוקול ה-SSL "לא ידע" איזה דומיי לאבטח (הרי בכתובת IP שיתופית יושבים אתרים רבים, עבור אילו מהם תוצפן התקשורת?)
ה"מהפכה" ב-SNI היא שהוסיפו את האפשרות שהשרת "יבין" לאיזה HOSTNAME (כלומר, דומיין) ניגשים בפרוטוקול ה-SSL.כפי שצויין קודם, החסרון (היחסי) בשיטה זו שהיא תומכת רק בדפדפנים חדשים יחסית (בני שנתיים+), מה שהופך להיות לאט-לאט לחסרון מינורי, וזאת מכיון שהדפדפנים הישנים נעלמים מהעולם.
חשוב לזכור כי במידה והאתר שלכם (לדוגמא) מיועד עבור הורדת Drivers למחשבים ישנים.. אולי שווה שלא לעבוד בשיטה זו.
אחרי שהחלטנו באיזו שיטה אנחנו עובדים, נשאר רק לרכוש את תעודת ה-SSL.. והמבחר והאפשרויות – לא קטן.
סוגי תעודות SSL
תכולת תעודות
תכולת התעודות מתייחסת לשאלה: עבור אילו דומיינים התעודה נתמכת?
לשאלה זו יש 3 תשובות (שהן גם שלושת סוגי התעודות הקיימות כיום)
- Single domain: אפשרות זו תקפה לרוב המכריע של התעודות הנמכרות כיום באינטרנט.
מדובר בתעודת SSL התקפה עבור דומיין אחד (spd.co.il) או עבור דומיין אחד ורשומת ה-WWW שלו (spd.co.il ו-www.spd.co.il).
אלה אם ציינתם אחרת, זו כנראה תעודת ה-SSL שתקבלו מהספק. - WildCard SSL: תעודת SSL מסוג Wildcard היא תעודה התקפה עבור הדומיין וכלל הסאב דומיינים שלו ברמה אחת.
כלומר, אם הדומיין שלנו הוא hostingblog.co.il, התעודה תהיה תקפה עבור *.hostingblog.co.il, משמע- עבור כל דבר (נקודה) hostingblog.co.il
לעומת זאת, אם הדומיין שלנו הוא x.y.co.il, התעודה תהיה תקפה עבור x.y.co.il ועבור כל הסאב דומיינים שלו (כלומר, *.x.y.co.il). - SAN: אלו ראשית תיבות עבור "Subject Alternative Name" – מדובר בתעודות היכולות לכלול מספר רב של דומיינים באותה התעודה.
ייתרון: לא תמיד ניתן להתקין מספר תעודות SSL על אותו השרת, כשמדובר בתעודה אחת עבור דומיינים רבים – גם אין צורך בכך.
חסרון: כלל הדומיינים בתעודה מופיעים בה – כלומר, אם אתם רוצים לנסות להסתיר קשר עסקי בין אתר x.com ל-y.com, שימוש בתעודה מסוג SAN לא יהיה הדבר החכם לעשות.
רמות אימות
בכל הנוגע ל-SSL, ישנן מספר "רמות אימות" שאנו יכולים לרכוש,
רמת האימות שנזדקק לה יקבע לרוב לפי אופי האתר (אתר בנקאות יזדקק לרמת אימות גבוהה יותר מאתר לרכישת גוגואים) ולפי הנראות שאנו רוצים לתת ללקוח, לדוגמא- במידה ונרצה להראות ללקוח כי רמת הזיהוי אכן גבוהה, נשתמש בתעודת SSL מסוג EV (יוסבר מיד).
- Domain validation: בקיצור DV, זו התעודה מהסוג הבסיסי ביותר – ההצפנה תפעל, אך רמת הזיהוי שהגוף המאמת יבצע מולנו היא הבסיסית ביותר – הוא רק יבדוק שאנחנו אכן בעלי הדומיין.
בדיקה זו תתבצע על ידי שליחת דואר לאחת התיבות על הדומיין, כאשר הרעיון העומד מאחורי שיטת הבדיקה היא שבמידה ואנחנו יכולים לפתוח תיבת דואר על הדומיין – אנחנו ככול הנראה קשורים לדומיין ויש לנו שליטה עליו. - Full organization validation: ההצפנה כמובן – תעבוד, בנוגע לרמת האימות ע"י הגוף החותם: רמת האימות היא כזו שהגוף החותם יבקש לאמת את הארגון העומד מאחורי האתר.
כיצד הוא יבצע זאת? הגוף החותם יפנה ל-Whois של האתר וידלה משם את שם החברה (או הבעלים של האתר), לאחר מכן, יבקש אותו גוף מסמכים המאמתים שאנחנו אכן אותו הגוף (בין אם מדובר על צילום תעודת זהות, או צילום של תעודת התאגדות במקרה של חברה).
בנוסף, החברה המבצעת את החיתום תיצור קשר טלפוני עם אחד העובדים הקבועים בחברה ותשאל אותו שאלות שיאמתו את הקשר בינו לבין החברה.
חשוב לציין כי תעודה זו לא תעניק לנו את ה-Green bar. - Extended validation: תעודה זו היא התעודה המקיפה ביותר, הן ברמת האימות (בפועל מתבצע אימות ברמה של Full organization validation) והם ברמת הנראות ללקוח (התעודה מעניקה את ה-Green Bar האומרת מעל לכל צל של ספק מי הוא המפעיל מאחורי כתובת הדומיין).
ביטוח
הביטוח הקיים בכל תעודת SSL הוא בעצם ביטוח עבור משתמש הקצה במקרה של הפסד כספי כאשר מבצעים רכישה/העברה של מוצרים/כספים באמצעות אתר המוגן בתעודת SSL.
מכיוון שהרעיון הכללי של כל תעודת SSL היא לאפשר בטחון לרוכש – במידה וספק הSSL נכשל במשימתו לזהות ולאמת את זהותו של מפעיל האתר – דבר שהוביל לתרמית ולגניבת פרטי האשראי, ישמש הביטוח לכיסוי הפסדיו הפוטנציאלים של משתמש הקצה.
הביטוח שמיש רק במידה ונגבו כספים, ובמידה ניתן להוכיח שאכן ספק הSSL נכשל במשימתו – מופעל הביטוח.
תהליך הזמנת תעודת ה-SSL (באופן כללי)
- בשלב הראשון, עלינו להנפיק CSR (קיצור ל-Certificate request)- זוהי ה"בקשה לתעודה" אותה אנחנו מגישים לחברת החיתום.
הבקשה תכיל את שם הדומיין תחתיו אנחנו מעוניינים להנפיק את התעודה ופרטים מזהים על החברה (שם, כתובת, מדינה וכו').
בקשת ה-CSR היא זהה עבור כלל רמות האימות.
לעומת זאת, בקשת ה-CSR יכולה להראות שונה במידה והיא עתידה לרכוש תעודת מסוג Wildcard או תעודה מסוג SAN.
ההנפקה עצמה מבוצעת מהשרת המאחסן את האתר, אני ממליץ בחום לבדוק מול חברת האחסון שלכם כיצד יש לבצע את ההנפקה כהלכה (או להשתמש באחד המדריכים שיצורפו בסוף מאמר זה).
בזמן הנפקת ה-CSR השרת יוצר גם "מפתח פרטי" (KEY) עליו הסברנו קודם. - לאחר הנפקת ה-CSR, נעביר אותו לספק החיתום שלנו.
בתגובה, הוא אמור "להחזיר" CER (כלומר, Certificate), התעודה שהספק יחזיר תתבסס על ה-KEY שיצא את ה-CSR.
כלומר, בסופו של תהליך- תהיה התאמה בין המפתח הפרטי שיצר השרת (KEY) לבין המפתח הציבורי שהוחזר לנו ע"י הגורם החותם (CER).חשוב לציין, לצורך אימות (בכל רמת אימות) הספק ישלח לנו מייל על מנת לוודא כי אנחנו אלו ששולטים בדומיין.
המייל יכול להשלח אך ורק לכתובות קבועות שנקבעו ע"י הספק ולא ניתן לשנותן (גם אם ממש נרצה).
ברוב החברות המנפיקות ניתן יהיה להשתמש באחת מהתיבות הבאות:
admin@yourdomain.com, administrator@yourdomain.com, hostmaster@yourdomain.com, webmaster@yourdomain.com, postmaster@yourdomain.com - את התעודה נתקין בחזרה בשרת שלנו (לרוב באמצעות ממשק הניהול של האתר).
ועל מנת להיות יותר פרטים, להלן מדריכים שיסייעו לכם בהתקנת תעודות SSL באמצעות ממשקי הניהול הפופולריים כיום לאחסון אתרים:
CPanel: https://support.spd.co.il/Knowledgebase/Article/View/63/11/ssl
DirectAdmin: https://support.spd.co.il/Knowledgebase/Article/View/11/2/ssl
Plesk: https://support.spd.co.il/Knowledgebase/Article/View/39/5/ssl
לסיכום
איזה תעודה מתאימה לכם? קשה לקבוע על רגל אחת, ואם יש ספק- כרגיל, אני ממליץ ליצור קשר עם חברת האחסון.
תוך שאלת מספר שאלות היא אמורה להיות מסוגלת לסייע לכם להבין את הצרכים הטכניים בכל הנוגע לתעודת ה-SSL.
האם חייבים לרכוש את תעודת הSSL שלכם מחברת אחסון האתרים שלכם? לא, עדיף לקנות ממישהו שמבין ושימכור לכם מוצר המתאים בצורה הטובה ביותר.
אבל- לעיתים עדיף לשלם כמה שקלים יותר ולתת לגורם אחד לבצע את כל הליך ההתקנה, מהנפקת ה-CSR, דרך ה"דיבור" מול החברה המנפיקה ועד להתקנת התעודה בפועל.
מעין "one stop shop" לתעודות SSL.
הפרש המחירים בין התעודות הוא פסיכי- למה? התשובה לכך נעוצה במספר גורמים:
- מוצר שונה: כפי שראינו במאמר, יש לא מעט סוגים של מוצרי SSL שונים, הפרש המחירים בינהם יכול להגיע למאות דולרים.
- גורם גדול: רכישה מהגורם המנפיק היא לרוב שיטת הרכישה הכי פחות משתלמת, החברות המנפיקות לא רוצות "להתעסק" עם לקוחות "קטנים" ולכן נותנות הנחות משמעותיות למשווקי המשנה שלהם (Resellers), ככול שמשווק המשנה גדול יותר – כך גם ההנחה שהוא מקבל גדולה יותר, והמחיר לכם (כלקוח הקצה) זול יותר.
- מותג: בדיוק כמו הסיבה (לפעמים) להפרש המחירים בין Nike ל-Mike.
ככול שהמותג יותר מוכר, הוא יותר אמין – ואמינות בתחום ה-SSL שווה הרבה כסף.
טכנית? סביר להניח ששני המוצרים זהים לחלוטין.
בהצלחה!
- ריבוי אתרים בחשבון = סיכון אבטחה - יולי 16, 2017
- Let's encrypt – תעודות SSL, ובחינם! - ינואר 17, 2017
- PHPMailer Exploit - דצמבר 28, 2016
היי,
כשאני מנסה להיכנס לאתר מכרום מהנייד (אנדרואיד)- זה נותן לי הודעת שגיאה "החיבור אינו פרטי" , לא מזהה שיש תעודת אבטחה ואם אני נכנסת לכרום מאייפון-אין שגיאה כזו. התעודה פעילה כבר כמעט חצי שנה.. מה עושים?
תודה
סביר להניח שהבעיה היא בתעודת ה-CA (שלא הותקנה, או שלא הותקנה כהלכה)
על איזה דומיין מדובר?