תמיכת SSL ב-App Engine כוללת נקודות קצה של SSL שמפוזרות ברחבי העולם ואיזון עומסים מובנה, כדי להציג את האפליקציה שלכם בצורה מאובטחת, מהימנה ומהירה לקהל בכל העולם.
כברירת מחדל, חיבורי HTTPS בדומיין המותאם אישית מופעלים באופן אוטומטי באמצעות אישורי SSL מנוהלים. אחרי מיפוי של דומיין מותאם אישית לאפליקציה ועדכון רשומות ה-DNS, מערכת App Engine מספקת אישור SSL מנוהל, מחדשת את האישור ומבטלת אותו כשמסירים את הדומיין המותאם אישית מהאפליקציה.
לפני שמתחילים
חשוב לוודא שכבר הגדרתם את הדומיין המותאם אישית בפרויקט App Engine.
אם אתם משתמשים ב-Cloud Load Balancing ובקבוצת נקודות קצה ברשת (NEGS) בלי שרתים כדי לנתב תעבורת נתונים לאפליקציית App Engine, מומלץ למפות את הדומיין המותאם אישית למאזן העומסים במקום ישירות לאפליקציה, ולהשתמש באישורי SSL בניהול Google שנוצרו עבור מאזן העומסים. כך לא צריך לנהל אישורי SSL נפרדים לכל אפליקציה בלי שרת. באמצעות Cloud Load Balancing, אפשר להגדיר מדיניות SSL ששולטת בתכונות של SSL שמאזן העומסים מנהל משא ומתן לגביהן עם הלקוחות.
מידע נוסף זמין בדפים הבאים:
חשוב לזכור את ההגבלה הבאה:
- מומלץ להשתמש באמצעי בקרה על תעבורת נכנסת כדי שהאפליקציה תקבל רק בקשות שנשלחות ממאזן העומסים (ומ-VPC אם משתמשים בו). אחרת, המשתמשים יכולים להשתמש בכתובת ה-URL של האפליקציה ב-App Engine כדי לעקוף את מאזן העומסים, את מדיניות האבטחה של Cloud Armor, את אישורי ה-SSL ואת המפתחות הפרטיים שמועברים דרך מאזן העומסים.
אימות אישור מנוהל
אחרי ההגדרה של הדומיין המותאם אישית ועדכון רשומות ה-DNS, אישור SSL מנוהל מסופק באופן אוטומטי תוך כמה דקות. בחירת רשות האישורים מתבצעת באופן אוטומטי. האישור המנוהל נחתם על ידי Google Trust Services (GTS) או על ידי Let's Encrypt.
כדי לוודא שהאישור הוקצה:
במסוף Google Cloud , עוברים אל App Engine > Settings > Custom Domains (הגדרות > דומיינים בהתאמה אישית):
אבטחת ה-SSL מוצגת כניהול Google.
פתרון בעיות שקשורות לאישורי SSL מנוהלים
יכול להיות שתצטרכו לעדכן את רשומות ה-DNS של הדומיין המותאם אישית כדי לאמת את שם הדומיין. App Engine לא יכול לספק אישורים לדומיינים לא מאומתים.
אפשר לבדוק את סטטוס האישור באמצעות Admin API על ידי שימוש בבקשת AuthorizedCertificate.GET.
אם לא הוקצה אישור מנוהל כי רשומות ה-DNS לא זמינות, יכול להיות שהשדה
ManagedCertificate.ManagementStatusיהיהFAILED_RETRYING_NOT_VISIBLE. צריך לוודא שרשומות ה-DNS מעודכנות, לחכות כמה דקות ולנסות שוב. יכולות לחלוף 24 שעות עד שרשומות ה-DNS יהיו זמינות.אם הסטטוס הוא
FAILED_PERMANENT, סימן שכל הניסיונות לחידוש נכשלו. צריך לבדוק את הגדרות ה-DNS ואז לעדכן את מיפוי הדומיין המותאם אישית לפי השלבים לעדכון לאישורי SSL מנוהלים.
שדרוג לאישורי SSL מנוהלים
לפני שמשדרגים לאישורי SSL שמנוהלים על ידי Google, חשוב לדעת שאישורים מנוהלים לא תומכים במיפויים עם תו כללי לחיפוש.
אם אתם משתמשים בתת-דומיינים והאישור מונפק על ידי Let's Encrypt, יש מגבלה של 50 אישורים מנוהלים בשבוע לכל דומיין בסיסי. אם הגעתם למגבלה, App Engine ימשיך לנסות להנפיק אישורים מנוהלים עד שכל הבקשות ימולאו.
כדי לעבור מאישורי SSL משלכם לאישורי SSL בניהול Google, או כדי להוסיף אישורי SSL בניהול Google לאפליקציה קיימת עם דומיין מותאם אישית, צריך לעדכן את מיפוי הדומיין:
במסוף Google Cloud , עוברים אל App Engine > Settings > Custom Domains (הגדרות > דומיינים בהתאמה אישית):
בוחרים את הדומיין שרוצים לאבטח ולוחצים על הפעלת אבטחה מנוהלת.
השבתת אישורי SSL מנוהלים
כדי להשבית אישורי SSL מנוהלים:
במסוף Google Cloud , עוברים אל App Engine > Settings > Custom Domains (הגדרות > דומיינים בהתאמה אישית):
בוחרים את הדומיין ולוחצים על השבתת האבטחה המנוהלת.
שימוש באישורי SSL משלכם
במקום להשתמש באישורי SSL מנוהלים, אפשר להשתמש באישור משלכם. אם לאישור שלכם אין הוכחת שקיפות, יכול להיות שיוצגו באפליקציה אזהרות SSL ב-Chrome בגלל אכיפה של הוכחת שקיפות האישור. מידע נוסף על הוכחות לשקיפות אישורים ועל אופן הפעולה בהתאם לדרישות זמין במאמר אכיפת שקיפות אישורים.
כדי להשתמש באישורי SSL משלכם ולנהל אותם במקום באישורים שמנוהלים על ידי Google:
חשוב לוודא שכבר הגדרתם את הדומיין המותאם אישית בפרויקט App Engine.
מקבלים אישור לדומיין מרשות האישורים (CA) שתבחרו. התהליך המדויק עשוי להשתנות בהתאם לרשות.
ממירים את קובצי המפתח הפרטי ואישור ה-SSL לפורמטים שנתמכים על ידי App Engine. לפני שמעלים את הקבצים, צריך להמיר את המפתח הפרטי למפתח פרטי RSA ולשרשר את אישורי ה-SSL לקובץ אחד.
צריך לוודא שיש לכם את ההרשאות הנכונות במסוףGoogle Cloud ובעלות מאומתת (שלב 3) על כל הדומיינים שקשורים זה לזה או על דומייני ההורה שלהם. לדוגמה:
- אם האישור הוא עבור
www.example.com, אפשר לאמת את הבעלות עלwww.example.comאו עלexample.com. - אם האישור הוא עבור
www.example.comו-sub.example.com, אפשר לאמת את הבעלות עלwww.example.comועלsub.example.com, או עלexample.com. - אם האישור הוא עבור
*.example.com, צריך לאמת את הבעלות עלexample.com.
- אם האישור הוא עבור
מעלים את המפתח הפרטי ואת אישור ה-SSL, ואז ממפים את הדומיין לאפליקציה:
-
במסוף Google Cloud , עוברים אל App Engine > Settings > SSL certificates:
-
לוחצים על העלאת אישור חדש.
-
מעלים את אישור ה-SSL המשורשר בקטע
PEM encoded X.509 public key certificate, לדוגמהconcat.crt, ואז מעלים את המפתח הפרטי של RSA בקטע מפתח פרטי של RSA בקידוד PEM לא מוצפן, לדוגמהmyserver.key.pem. - לוחצים על Upload. כל אישור SSL שמעלים גלוי וזמין לשימוש בכל Google Cloud הפרויקטים האחרים, כך שלא צריך להעלות את אותו אישור שוב ושוב.
- בוחרים את האישור שרוצים להקצות לדומיין ואז לוחצים על שמירה כדי להשתמש ב-SSL עבור הדומיין הזה.
-
כדי לבדוק את השינויים, נכנסים לדומיין בדפדפן באמצעות
https, למשלhttps://www.example.com.
העברת מיפויים מאישור להצגת מודעות לאישור חדש
כשמועד התפוגה של אישור מתקרב, צריך להעלות אישור חדש ולהעביר את המיפויים הקיימים של האישור הישן לאישור החדש. ההליך הבא מניח שהאישור הקיים עדיין בתוקף ומוגדר כרגע לדומיין המותאם אישית שלכם.
כדי להעביר מיפויים מאישור פעיל:
מקבלים אישור חדש לדומיין מרשות האישורים (CA) שתבחרו.
ממירים את קובצי המפתח הפרטי ואישור ה-SSL לפורמטים שנתמכים על ידי App Engine.
מעלים את המפתח הפרטי של RSA ואת אישור ה-SSL המשורשר:
-
מעלים את אישור ה-SSL בדף אישורי SSL.
עוברים אל SSL Certificates-
לוחצים על העלאת אישור חדש.
- מעלים את אישור ה-SSL המשורשר בקטע PEM encoded X.509 public key certificate (אישור של מפתח ציבורי X.509 בקידוד PEM), לדוגמה
concat.crt, ואז מעלים את המפתח הפרטי של RSA בקטע Unencrypted PEM encoded RSA private key (מפתח פרטי של RSA בקידוד PEM לא מוצפן), לדוגמהmyserver.key.pem. - לוחצים על Upload.
-
- בוחרים את האישור החדש שהוספתם זה עתה מרשימת האישורים, ואז בוחרים את הדומיין שהאישור הישן משמש אותו.
- לוחצים על שמירה כדי להעביר את המיפויים מהאישור הישן לאישור החדש.
-
קבלת אישור
התהליך לקבלת אישור SSL משתנה בהתאם לרשות האישורים שבה אתם משתמשים. יכול להיות שתצטרכו לבצע שינויים קלים בהוראות שבהמשך. בדרך כלל, כל רשות אישורים מספקת הוראות שיעזרו לכם בתהליך.
כדי לקבל אישור לשימוש באפליקציית App Engine:
יוצרים מפתח פרטי ובקשת חתימה על אישור (CSR) באמצעות הכלי openssl:
מריצים את הפקודה הבאה מהספרייה שבה רוצים ליצור את הקובץ
server.csr:openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csrwhere:
-
[MY_PRIVATE_KEY].keyהוא הקובץ שנוצר שבו מאוחסן המפתח הפרטי. לדוגמה:myserver.key -
[MY_CSR].csrהוא הקובץ שנוצר לבקשת החתימה על האישור. לדוגמה:server.csr
-
כשמוצגת בקשה, מזינים את הפרטים הבאים:
- קוד המדינה בן 2 הספרות, למשל
USלארצות הברית. - שם העיר.
- שם החברה. אם אין לכם חברה, אתם יכולים להשתמש בשם שלכם.
- היחידה הארגונית או
NAאם אין לכם יחידה כזו. - שם נפוץ שמייצג את הדומיין, לדוגמה:
www.example.com - כתובת האימייל שלכם.
לא צריך לציין אף אחד מהערכים האחרים, כולם אופציונליים.
- קוד המדינה בן 2 הספרות, למשל
קובעים איזו רשות אישורים מתאימה לכם ורוכשים אישור. לדוגמה, אפשר להשתמש ב-SSLMate, ב-Thawte, ב-Comodo או בכל רשות אישורים אחרת.
פרטים על סוגי האישורים הנתמכים זמינים במאמר סוגי אישורי SSL.
כש-CA מבקש את התוכן של קובץ ה-CSR, פועלים לפי ההוראות שלו להעתקה ולהדבקה של התוכן מקובץ
.csrשיצרתם קודם, לדוגמהserver.csr.פועלים לפי ההנחיות כשסמכות האישורים מבקשת אישור מבעל הדומיין.
אחרי שתספקו את האישור של בעל הדומיין, רשות האישורים תשלח לכם את האישור, בדרך כלל כקובץ ZIP. צריך לפתוח את קובץ ה-ZIP בספריית עבודה כדי לשרשר את האישורים האלה להעלאה ל-App Engine.
המרת מפתחות פרטיים ושרשור אישורי SSL
לפני שמעלים את המפתח הפרטי ואת אישורי ה-SSL ל-App Engine, צריך להמיר את המפתח הפרטי למפתח פרטי מסוג RSA ולשרשר את כל אישורי ה-SSL.
ממירים את קובץ המפתח הפרטי שיצרתם קודם לכן למפתח פרטי RSA לא מוצפן. לדוגמה, אפשר להריץ את הפקודה הבאה של
openssl rsa:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pemwhere:
-
[MY_PRIVATE_KEY].keyהוא הקובץ שנוצר ומכיל את המפתח הפרטי שלכם. לדוגמה:myserver.key
[MY_RSA_KEY].keyהוא הקובץ שנוצר ומכיל מפתח RSA פרטי לא מוצפן. לדוגמה:myserver.key.pemדוגמה:
openssl rsa -in myserver.key -out myserver.key.pem
-
משרשרים את כל קובצי
.crtמרשות האישורים לקובץ אחד באמצעות הפקודה הבאה:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crtאיפה
-
[MY_DOMAIN_CERT].crtהוא האישור לדומיין שלכם. לדוגמה:www_example_com.crt [MY_SecureServerCA].crt,[MY_TrustCA].crtו-[MY_TrustExternalCARoot].crtהם קובצי האישורים האחרים שסופקו על ידי הרשות המנפיקה.
[MY_CONCAT_CERT].crtהוא קובץ משורשר שמכיל את כל קובצי האישורים שלכם מ-.crt. דוגמה:concat.crtדוגמה:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
-
מאמתים את אישור ה-SSL והמפתח הפרטי:
כדי לוודא שהמפתח הפרטי והאישור תואמים, אפשר להשתמש בפקודות
openssl x509ו-openssl rsa. דוגמאות:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5הפקודות openssl x509 ו-openssl rsa אמורות להחזיר את אותו פלט.
כדי לוודא שאישור ושרשרת רשויות האישורים שלו תקפים, אפשר להשתמש בפקודה openssl verify. לדוגמה:
openssl verify -verbose -CAfile concat.crt concat.crt
כשתהיו מוכנים, תוכלו להעלות את המפתח הפרטי של RSA ואת האישורים המשורשרים ל-App Engine.
סוגים של אישורי SSL
App Engine תומך בסוגי האישורים הבאים:
- דומיין יחיד או שם מארח יחיד
- חתימה עצמית
- תו כללי לחיפוש
- שם חלופי של בעלים (subject) (SAN) / כמה דומיינים
יש כמה דברים שצריך לעשות עם האישורים והמפתחות:
- המפתח הפרטי והאישור צריכים להיות בפורמט PEM.
- המפתחות הפרטיים לא יכולים להיות מוצפנים.
- קובץ אישור יכול להכיל עד חמישה אישורים, כולל אישורים בשרשרת ואישורי ביניים.
- כל שמות הנושאים באישור המארח צריכים להיות זהים לדומיינים המאומתים של המשתמש או להיות תת-דומיינים שלהם.
- המפתחות הפרטיים חייבים להשתמש בהצפנת RSA.
- המודולוס המקסימלי המותר של המפתח: 2048 ביט
אם אישור המארח דורש אישור ביניים או אישור בשרשרת, כמו שרשויות אישורים (CA) רבות מנפיקות, צריך להוסיף את אישורי הביניים או האישורים בשרשרת לסוף קובץ האישור הציבורי.
חלק מהתכונות של App Engine משתמשות בתתי-דומיינים מיוחדים. לדוגמה, אפליקציה יכולה להשתמש בתתי-דומיינים כדי לפנות לשירותי אפליקציה, או כדי לפנות לגרסאות שונות של האפליקציה. כדי להשתמש בהם עם SSL, כדאי להגדיר אישור SAN או אישור כללי. אישורים כלליים תומכים רק ברמה אחת של תת-דומיין.
הסרת אישורי SSL מותאמים אישית
כדי להפסיק להשתמש באישור SSL מותאם אישית:
במסוף Google Cloud , נכנסים לדף ההגדרות SSL certificates של App Engine.
לוחצים על האישור שרוצים להסיר מהדומיין.
מבטלים את הסימון של שם הדומיין שרוצים להפסיק להשתמש בו באישור ה-SSL, ואז לוחצים על שמירה.
שימוש בכותרות Strict-Transport-Security
מטעמי אבטחה, כל האפליקציות צריכות לעודד את הלקוחות להשתמש בחיבורי https. כדי להורות לדפדפן להעדיף את https על פני http,
משתמשים בכותרת Strict-Transport-Security.
המאמרים הבאים
כדי לשדרג אפליקציות קיימות כך שיתאפשר רק תעבורה מאובטחת לגרסאות TLS 1.2 ומעלה, אפשר לעיין במאמר בנושא אבטחת האפליקציה באמצעות TLS מינימלי.
אם אתם רוצים ש-Cloud Load Balancing ינהל את הבקשות הנכנסות לדומיין המותאם אישית שלכם, כדאי לעיין במאמר בנושא העברת דומיין מותאם אישית של App Engine ל-Cloud Load Balancing.