התמיכה ב-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 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 (אישור של מפתח ציבורי בקידוד PEM X.509), לדוגמה
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. פורסים את הקובץ הזה לתיקיית עבודה כדי לשרשר את האישורים האלה להעלאה ל-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.