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

תוכן העניינים 7 פרקים

מה הדפדפן בעצם אומר כשהוא כותב Not Secure

חיבור HTTPS עושה שני דברים נפרדים. הוא מצפין את מה שעובר בין הגולש לשרת, כדי שמי שיושב על אותה רשת אלחוטית לא יוכל לקרוא את מה שנשלח בטופס. והוא מאמת זהות: תעודה שהונפקה על ידי גוף שהדפדפן סומך עליו, ורשומה בדיוק על הדומיין שנמצא בשורת הכתובת. הכיתוב Not Secure מופיע כשאחד משני הדברים האלה חסר. הוא לא אומר שהאתר נגוע, שהוא איטי או שיש בו קוד זר.

חשוב להבחין בין שתי דרגות חומרה, כי הן דורשות טיפול שונה לגמרי. הדרגה הקלה היא כיתוב שקט ליד הכתובת. העמוד נטען, הגולשים נכנסים, וחלקם בכלל לא שמים לב. הדרגה הכבדה היא מסך מלא לפני שהעמוד נפתח, עם הודעה כמו Your connection is not private וקוד כמו NET::ERR_CERT_DATE_INVALID. במצב הזה איש לא מגיע לתוכן בלי ללחוץ על קישור מוסתר ולאשר שהוא ממשיך בכל זאת, ורוב האנשים פשוט חוזרים אחורה.

נקודה שמבלבלת הרבה בעלי אתרים: כרום כבר לא מציג מנעול סגור בעמודים תקינים. במקום המנעול יש שם אייקון הגדרות ניטרלי. אז היעדר מנעול הפסיק להיות סימן לבעיה, ומה שכן מעיד על בעיה הוא הטקסט עצמו.

למה זה כמעט אף פעם לא סימן לפריצה

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

הסיבות המעשיות הן מהסוג המשעמם: תעודה שפגה ולא חודשה, אתר שעבר שרת ולא הונפקה לו תעודה חדשה, הגדרה בוורדפרס שעדיין מצביעה על HTTP, או קובץ ישן בתוך העמוד שנטען מכתובת לא מוצפנת. תעודת SSL בסיסית היא היום מוצר חינמי. Let’s Encrypt מנפיקה תעודות ללא תשלום, ורוב חברות האחסון בישראל מחברות אותה בלחיצה אחת מתוך לוח הבקרה. אם מישהו מנסה למכור לכם תעודה בסיסית בכסף, זו החלטה מסחרית שלו ולא הכרח טכני. תעודות בתשלום רלוונטיות בעיקר לצרכים ספציפיים, למשל תעודה שמכסה מספר תת-דומיינים או תעודה עם אימות ארגוני.

מה כן היה מעיד על פריצה? משתמש אדמין שלא הוספתם, הפניות של גולשים ממכשירים ניידים בלבד לאתר אחר, עמודים בשפה זרה שמופיעים בתוצאות החיפוש של הדומיין שלכם, או קבצים בתיקיית wp-content עם תאריך שינוי שאף אחד מכם לא מסביר. אם משהו מהרשימה הזאת מתקיים במקביל לאזהרה, כדאי להפסיק להתעסק בתעודה ולעבור לטיפול של אבטחת אתר וורדפרס, שזו עבודה אחרת לגמרי.

חמש הסיבות שמייצרות את האזהרה, ומה מבדיל ביניהן

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

הסיבה מה רואים איפה בודקים רמת הטיפול
תעודה שפגה או שלא חודשה מסך אזהרה מלא לפני שהעמוד נפתח מסך SSL בלוח הבקרה של האחסון, ותאריך התוקף בתעודה בעל האתר, מתוך לוח הבקרה
האתר עדיין מוגש ב-HTTP הכיתוב Not Secure בכל עמוד, בלי מסך חוסם ניסיון לפתוח את הכתובת ידנית עם https הפניית 301 ברמת השרת
הגדרות siteurl ו-home מצביעות על HTTP חלק מהעמודים תקינים, בחלק נשבר החיבור המאובטח הגדרות כלליות בוורדפרס, או השורות המקבילות בקובץ wp-config בעל האתר, אם השדות לא נעולים בקוד
mixed content בתוך התוכן האזהרה מופיעה בעמודים ספציפיים בלבד לשונית Console בכלי הפיתוח של הדפדפן סריקה של מסד הנתונים והחלפה מבוקרת
תת-דומיין או ספק CDN בלי תעודה משלו אזהרה רק בכתובת אחת, למשל אזור ההרשמה או הבלוג בדיקת התעודה בנפרד לכל תת-דומיין ספק ה-CDN או חברת האחסון

שימו לב לשורה השלישית. זו הסיבה שהכי הרבה אנשים מפספסים, כי האתר נראה תקין בעמוד הבית ונשבר דווקא בעמוד פנימי. וורדפרס בונה חלק מכתובות הקבצים לפי ערך ההגדרה, ולא לפי הכתובת שבה הגולש נמצא. אם הערך נשאר HTTP אחרי מעבר, כל קובץ שנבנה ממנו נטען בלי הצפנה.

חמש סיבות לאזהרה בדפדפן - מה מבדיל ביניהן | שיווקנט
חמש סיבות לאזהרה בדפדפן

mixed content: איך קובץ אחד שובר עמוד שלם

זה הלב של האזהרה במקרים שבהם התעודה תקינה לגמרי. העמוד עצמו נמסר מוצפן, אבל בתוכו יש בקשה לקובץ בכתובת HTTP. מבחינת הדפדפן, החוליה החלשה קובעת. אין דבר כזה עמוד מוצפן למחצה.

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

המקומות שבהם כתובות HTTP ישנות מסתתרות הם תמיד אותם מקומות: תוכן של פוסטים ותיקים שהועלו לפני המעבר להצפנה, הגדרות של תבנית או של רכיבי צד שמאוחסנות במסד הנתונים, נתונים של בונה עמודים, קבצי CSS שמכילים הפניה לכתובת מלאה, ותבניות מייל. חיפוש והחלפה גס במסד הנתונים לא מספיק כאן, כי חלק מהערכים שמורים במבנה מסודר שכולל את אורך המחרוזת, וכתיבה ישירה שוברת אותו. צריך כלי שמודע למבנה הזה, וגיבוי לפני שנוגעים.

יש גם פתרון עוקף שמוכר לרבים: תוסף שמשכתב את הפלט ומחליף HTTP ב-HTTPS בזמן אמת. הוא באמת מוריד את האזהרה, ואני משתמש בו לפעמים כפתרון ביניים בזמן שהאתר חי. אבל הכתובות השגויות נשארות במסד הנתונים, והן יחזרו לנשוך ביום שתעברו שרת או תבטלו את התוסף. התיקון של אזהרת Not Secure שאני עושה כולל גם את הניקוי במסד, לא רק את הכיסוי.

בדיקה עצמית של חמש דקות

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

  1. פתחו את האתר בחלון גלישה בסתר ורשמו את הכתובת ידנית עם https. אם מופיע מסך חוסם, עצרו כאן. זו תעודה, לא mixed content, וכל שאר הבדיקות מיותרות.
  2. לחצו על האייקון שליד הכתובת ופתחו את פרטי התעודה. בדקו שני שדות: תאריך התפוגה, והדומיין שהתעודה רשומה עליו. תעודה שרשומה על כתובת עם www בלבד תיצור אזהרה בכניסה בלי www, ולהפך.
  3. פתחו את כלי הפיתוח במקש F12, עברו ללשונית Console ורעננו. הודעות על תוכן מעורב מציינות את שם הקובץ המדויק שגורם לבעיה.
  4. בדקו ארבעה סוגי עמודים ולא רק את עמוד הבית: עמוד שירות, פוסט ישן מלפני שלוש שנים, עמוד עם טופס, ועמוד עם וידאו או מפה. הפוסט הישן הוא המקום הכי סביר לכתובות תמונה מיושנות.
  5. רשמו את הכתובת עם http בלבד. היא צריכה לקפוץ אוטומטית לגרסה המאובטחת, לא להיפתח כעמוד נפרד. אם היא נפתחת כעמוד נפרד, חסרה הפניה קבועה.
  6. עברו על תת-הדומיינים שאתם משתמשים בהם. אזור לקוחות, בלוג נפרד או מערכת דיוור על תת-דומיין שלכם צריכים תעודה משלהם.

בסוף שש הבדיקות האלה תדעו לאיזו שורה בטבלה למעלה אתם שייכים, וזה חוסך את רוב זמן האבחון.

בדיקה עצמית של חמש דקות - לפני שקוראים לעזרה | שיווקנט
בדיקה עצמית של חמש דקות

מה האזהרה עושה לאמון של הגולשים, ומה היא לא עושה

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

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

לגבי דירוג בגוגל, כדאי לדייק. גוגל הודיעה עוד ב-2014 שהיא מתייחסת ל-HTTPS כאות דירוג קל. זה אות קל, והוא לא יסביר צניחה בתנועה. הנזק האמיתי לנראות מגיע ממקום אחר: כשהתעודה שבורה, הסורק לא מצליח למשוך את העמודים, וזה כבר עניין של אינדוקס ולא של ניואנס בדירוג.

מה לתקן לבד, ומתי להעביר את זה למישהו עם גישה לשרת

יש דברים שאין סיבה לשלם עליהם. הנפקה או חידוש של תעודה מתוך לוח הבקרה, הפעלת אפשרות של כפיית HTTPS אם חברת האחסון מציעה אותה, והחלפה של קישור תמונה ישן בפוסט בודד: כל אלה עבודה של רבע שעה, וכל מי שיש לו את פרטי הכניסה לאחסון יכול לעשות אותה. שימו לב שהצעדים האלה עוברים דרך חשבון האחסון שלכם, כלומר דרך הוכחת בעלות. זו לא בירוקרטיה מיותרת, זו בדיוק הסיבה שאף אחד אחר לא יכול לגעת לכם בתעודה.

המצבים שבהם כדאי להעביר את זה הלאה הם אלה:

  • כתובות HTTP פזורות במסד הנתונים ובנתוני בונה העמודים, ולא בקובץ אחד.
  • ההגדרות נעולות בתוך wp-config ואי אפשר לשנות אותן מהממשק.
  • הופעל HSTS בעבר. ההגדרה הזאת מורה לדפדפנים לסרב לחיבור לא מוצפן לדומיין למשך חודשים, ואם התעודה נשברת אחריה הגולשים לא יכולים אפילו לאשר כניסה ידנית.
  • יש CDN באמצע, והתעודה שהגולש רואה היא של הספק ולא שלכם.
  • ניסיתם כבר שני תוספים שונים והמצב רק הסתבך.

אצלי תיקון אזהרת Not Secure מתומחר מ-₪350 לתקלה, לפני מע״מ, וכולל אבחון, תיקון והחזרת האתר למצב תקין בכל סוגי העמודים ולא רק בעמוד הבית. אם התברר תוך כדי שהאזהרה היא רק הסימפטום ויש בעיה רחבה יותר, יש פתרון תקלות WordPress בטווח ₪350-₪1,500 לתקלה, וחבילת חירום ב-₪2,500, גם כאן לפני מע״מ.

אם האתר שלכם מסומן עכשיו ואתם לא בטוחים לאיזו קטגוריה הוא שייך, שלחו לי את הכתובת ואומר לכם תוך כמה דקות אם מדובר בתעודה, בהגדרה או בתוכן מעורב, ומה סדר הגודל של התיקון. אפשר גם פשוט לשאול שאלה בלי להזמין כלום. WhatsApp היא הדרך המהירה ביותר להשיג אותי, ואם התיקון פשוט אגיד לכם לעשות אותו לבד. דברו איתי בוואטסאפ ←

מה זו אזהרת Not Secure בדפדפן, ומה היא עושה לאמון של הגולשים שלכם? - שיווקנט