Edge for Private Cloud v. 4.17.01
TLS (Transport Layer Security, שהקודם שלו הוא SSL) הוא טכנולוגיית האבטחה הסטנדרטית שמבטיחה שליחת הודעות מאובטחות ומוצפנות בסביבת ה-API. אפשר להגדיר TLS בפורטל API BaaS ובצמתים של API BaaS Stack.
בתמונה הבאה מוצג תרשים פריסה טיפוסי של API BaaS עם צומת יחיד של BaaS Portal ושלוש צמתים של API BaaS Stack.
המפתחים משתמשים בדפדפן כדי לשלוח בקשות לפורטל. כברירת מחדל, הבקשות משתמשות בפרוטוקול HTTP ביציאה 9000 של צומת הפורטל.
הפריסה הזו כוללת מאזן עומסים בין צמתים של Portal ו-Stack. בתצורה הזו, הפורטל שולח בקשות HTTP למאזן העומסים, ומאזן העומסים מעביר את הבקשות לאחד מהצמתים ב-Stack. זו סביבת הפריסה המומלצת למערכת ייצור.
אפשרויות ההגדרה של TLS
כשמגדירים TLS ל-API BaaS, יש כמה אפשרויות:
- מגדירים את TLS בפורטל ובמאזן העומסים של צמתים ב-Stack
בהגדרה הזו, המפתחים משתמשים בפרוטוקול HTTPS כדי לגשת לפורטל, והפורטל שפועל בדפדפן משתמש ב-HTTPS כדי לשלוח בקשות לצמתים ב-Stack דרך מאזן העומסים. מאזן העומסים משתמש ב-HTTP כדי לגשת לצמתים של ה-Stack. - הגדרת TLS בפורטל, במאזן העומסים ובצמתים של Stack
כדי לשפר את האבטחה, מגדירים את מאזן העומסים כך שישתמש ב-TLS כדי לגשת לצמתים של Stack. - איך מגדירים TLS בפורטל ובצומת אחד של מקבץ Stack
בסביבה קטנה, כמו בסביבת בדיקה או פיתוח, יכול להיות שיש רק צומת Stack אחד, כלומר לא צריך לכלול מאזן עומסים. בתצורה הזו, צריך להגדיר TLS גם בפורטל וגם בצומתי ה-Stack. - הגדרת TLS במאזן עומסים לפורטל
אפשרות אחת שלא מוצגת למעלה היא להשתמש במאזן עומסים לפני צומת הפורטל. בתצורה הזו, אפשר להגדיר TLS במאזן העומסים, ובאופן אופציונלי בחיבור בין מאזן העומסים לפורטל.
מוודאים שיציאת ה-TLS פתוחה
בתהליכים הבאים מגדירים את TLS ביציאת ברירת המחדל של הפורטל, 9000, ובצומת ה-Stack, 8080. עם זאת, אפשר לשנות את היציאה הזו אם צריך.
ללא קשר ליציאה שבה אתם משתמשים, עליכם לוודא שהיציאה פתוחה בצומת. לדוגמה, אפשר להשתמש בפקודה הבאה כדי לפתוח את יציאה 8443:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
הגדרת TLS ב-API BaaS Stack
כברירת מחדל, TLS מושבת ב-API BaaS Stack. לאחר מכן, כדי לגשת ל-BaaS API באמצעות HTTP, משתמשים בכתובת ה-IP או בשם ה-DNS של צומת ה-Stack וביציאה 8080. לדוגמה:
http://stack_IP:8080
לחלופין, אפשר להגדיר גישה ל-TLS ל-BaaS API כדי לגשת אליו בטופס:
https://stack_IP:8080
בדוגמה הזו, מגדירים גישה ל-TLS באמצעות יציאה 8080. עם זאת, אין צורך ביציאה 8080 – אפשר להגדיר את ה-Stack כך שישתמש ביציאה אחרת. הדרישה היחידה היא שחומת האש תאפשר תעבורת נתונים דרך היציאה שצוינה.
ה-Stack יכול לתמוך רק בסוג אחד של בקשה (HTTP או HTTPS) דרך יציאה אחת. לכן, אם מגדירים גישה ל-HTTPS ביציאה 8080, אי אפשר להשתמש ב-HTTP כדי לגשת ליציאה 8080. אם מגדירים את ה-Stack להשתמש ביציאה 8443 עם HTTPS, ה-Stack לא יקשיב יותר ביציאה 8080.
כדי להגדיר גישת TLS למקבץ יש לבצע את התהליך הבא:
- יוצרים את קובץ ה-JKS של מאגר המפתחות שמכיל את אישור ה-TLS ואת המפתח הפרטי. מידע נוסף זמין במאמר הגדרת TLS/SSL ל-Edge On Premises.
הערה: חשוב לוודא שהסיסמה במאגר המפתחות ובמפתח זהה. - מעתיקים את קובץ ה-JKS של מאגר המפתחות לתיקייה בצומת ה-Stack, למשל /opt/apigee/customer/application. הספרייה צריכה להיות נגישה למשתמש 'apigee'.
- משנים את הבעלות של קובץ ה-JKS למשתמש 'apigee':
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
כאשר keystore.jks הוא השם של קובץ מאגר המפתחות. - עורכים את הקובץ /opt/apigee/customer/application/usergrid.properties כדי להגדיר את המאפיינים הבאים, כולל הנתיב לקובץ ה-JKS והסיסמה למאגר המפתחות ולמפתח. אם הקובץ הזה לא קיים, יוצרים אותו:
tomcat-server_scheme=https
tomcat-server_secure=true
tomcat-server_ssl.enabled=true
tomcat-server_keystore.type=JKS
tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
tomcat-server_keystore.password=password
tomcat-server_keyalias=keystore_alias
tomcat-server_clientauth.enabled=false
tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
# כברירת מחדל, הגישה ל-TLS משתמשת ביציאה 8080.
# Use this property to specify a different port.
# tomcat-server_port=8080
אזהרה: הערך של password צריך להיות בטקסט ללא הצפנה. לכן, חשוב להגן על הקובץ usergrid.properties מפני גישה לא מורשית.
משתמשים במאפיין tomcat-server_keyalias כדי לציין את הכינוי של מאגר המפתחות. מגדירים את הכינוי של המפתח בזמן יצירת המפתח. לדוגמה, אפשר להגדיר אותו באמצעות האפשרות -alias בפקודה keytool.
משתמשים ב-tomcat-server_ssl.protocols כדי להגדיר את הפרוטוקולים של TLS שנתמכים ב-Stack. רשימה של הפרוטוקולים הנתמכים ב-Java 8 מופיעה בכתובת http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - מגדירים את צומת המקבץ:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid בתהליך - מפעילים מחדש את מקבץ BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid מחדש - כדי לוודא ש-TLS פועל, מריצים את פקודת cURL הבאה בצומת ה-Stack באמצעות HTTPS:
> curl -k https://localhost:8080/status -v
אם ה-TLS מוגדר כראוי, אמורה להופיע תגובה עם פרטי הסטטוס.
אם הגדרתם גישת TLS ביציאה שאינה 8080, משנים את הפקודה שלמעלה כך שתשתמש ביציאה הנכונה. - חוזרים על הפעולה בכל צומתי המקבץ.
- אם יש לכם מאזן עומסים לפני צמתים של Stack, צריך להגדיר את מאזן העומסים כך שישלח בקשות לצמתים של Stack דרך HTTPS. מידע נוסף זמין במסמכי העזרה של מאזן העומסים.
אם הפורטל שולח בקשות ישירות ל-Stack, צריך להגדיר את הפורטל לגשת ל-Stack דרך HTTPS כפי שמתואר בקטע הבא. - כדי לוודא שלצומת ה-Stack יש את כתובות ה-URL הנכונות של TLS בזמן יצירת התשובות של המשתמשים, צריך לפעול לפי התהליך שמתואר בקטע 'הגדרת צמתים של API BaaS Stack ל-TLS ב-Stack או בפורטל'.
הגדרת הפורטל לגישה ל-Stack דרך TLS
פורטל BaaS שפועל בדפדפן פועל באמצעות קריאות API ל-BaaS Stack. אם מגדירים את סטאק BaaS לשימוש ב-TLS, צריך גם להגדיר את הפורטל לבצע את הקריאות האלה דרך HTTPS.
התקנת API BaaS מוגדרת בדרך כלל לאחת מהאפשרויות הבאות:
- שימוש במאזן עומסים בין הפורטל לבין צמתים ב-Stack
מגדירים את מאזן העומסים כך שישלח בקשות לצמתים ב-Stack דרך HTTPS. מידע נוסף זמין במסמכי העזרה של מאזן העומסים.
בתצורה הזו, לפורטל יש גישה למאזן העומסים דרך HTTP או HTTPS, בהתאם להגדרה של מאזן העומסים. אם מאזן העומסים משתמש ב-TLS, צריך לפעול לפי התהליך שבהמשך כדי להגדיר את הפורטל כך שישלח בקשות למאזן העומסים של HTTPS. - מבקשים מהפורטל לשלוח בקשות ישירות למקבץ
מגדירים את הפורטל כך שיגש למקבץ באמצעות HTTPS כמו שמתואר בהמשך.
כדי להגדיר את פורטל ה-BaaS של API כך שיוכל לבצע קריאות ל-API דרך HTTPS:
- מגדירים גישת TLS ב-BaaS Stack כפי שמתואר למעלה, או במאזן העומסים של צומתי ה-Stack, כפי שמתואר במסמכי התיעוד של מאזן העומסים.
- עורכים את הקובץ /opt/apigee/customer/application/portal.properties כדי להגדיר את המאפיין הבא. אם הקובץ הזה לא קיים, יוצרים אותו:
baas.portal.config.overrideUrl=https://stackIP:port
מציינים כערך של המאפיין הזה את כתובת ה-IP או שם ה-DNS והיציאה של צומת API Stack להתקנה של צומת יחיד, או של מאזן העומסים אם יש מאזן עומסים מול צומתי API BaaS Stack. - מגדירים את צומת הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - מפעילים מחדש את הפורטל באמצעות הפקודה:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - אם השתמשתם באישור בחתימה עצמית כשהגדרתם את הגישה ל-TLS ב-Stack למעלה, יכול להיות שהדפדפן לא יאפשר שליחת בקשות ל-Stack מהפורטל. אם מופיעה בדפדפן שגיאה על כך שאין גישה ל-HTTPS ב-Stack, צריך לבקש את כתובת ה-URL הבאה בדפדפן ולהוסיף חריגת אבטחה כדי לאפשר גישה:
https://stackIP:port/status
צריך לציין את כתובת ה-IP או שם ה-DNS והיציאה של צומת API Stack או של מאזן העומסים.
הגדרת TLS בפורטל API BaaS
כברירת מחדל, משתמשים ניגשים לפורטל על ידי שליחת בקשות HTTP ללא הצפנה דרך יציאה 9000 בשרת הפורטל. אפשר להגדיר את הפורטל כך שישתמש ב-HTTPS כדי להצפין את הנתונים שנשלחים אליו וממנו.
כברירת מחדל, ניגשים לפורטל דרך HTTP באמצעות כתובת ה-IP או שם ה-DNS של צומת הפורטל ויציאה 9000. לדוגמה:
http://portal_IP:9000
לחלופין, אפשר להגדיר גישה ל-TLS לפורטל כדי לגשת אליו באמצעות הטופס:
https://portal_IP:9443
בדוגמה הזו, מגדירים גישה של TLS לשימוש ביציאה 9443. עם זאת, אין צורך ביציאה 9443 – אפשר להגדיר את הפורטל כך שישתמש ביציאה אחרת.
הפורטל יכול לתמוך רק בסוג אחד של בקשה (HTTP או HTTPS) ביציאה אחת בלבד. לכן, אם מגדירים גישה ל-HTTPS ביציאה 9000, אי אפשר להשתמש ב-HTTP כדי לגשת ליציאה 9000. אם מגדירים שהפורטל ישתמש ביציאה 9443 עם HTTPS, הפורטל לא יוכל יותר להאזין ביציאה 9000.
כדי להגדיר TLS לפורטל:
- יוצרים קובץ מפתח וקובץ אישור בפורמט PEM.
הערה: חשוב לוודא שאין סיסמה או ביטוי סיסמה במפתח או בתעודה. - מעתיקים את קובצי ה-PEM לספרייה בצומת הפורטל, למשל /opt/apigee/customer/application. הספרייה צריכה להיות נגישה למשתמש 'apigee'.
- משנים את הבעלות על קובצי ה-PEM למשתמש apigee:
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - עורכים את הקובץ /opt/apigee/customer/application/portal.properties כדי להגדיר את המאפיינים הבאים. אם הקובץ הזה לא קיים, יוצרים אותו:
baas.portal.ssl=on
baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem.פרוטוקולs
# Use this property to specify a different port.
# baas.portal.listen=9000
משתמשים ב-baas.portal.ssl.protocols כדי להגדיר את פרוטוקולי ה-TLS הנתמכים ב-Portal. לרשימת הפרוטוקולים הנתמכים, אפשר לעיין ברשימת שמות הפרוטוקולים של SSL שהוגדרו על ידי Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols. - מגדירים את צומת הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - מפעילים מחדש את הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal מחדש - כדי לוודא שלצומת ה-Stack יש את כתובת ה-URL הנכונה של TLS לפורטל, צריך לפעול לפי התהליך שמתואר בקטע 'הגדרת צמתים של API BaaS Stack ל-TLS ב-Stack או בפורטל'.
הגדרת צמתים של API BaaS ל-TLS ב-Stack או ב-Portal
אם כוללים מאזן עומסים לפני צמתים של Stack או Portal, או מפעילים TLS ישירות בצומת של Portal או Stack, צריך להגדיר את הצמתים עם כתובות ה-URL הנכונות כדי לגשת ל-Stack ול-Portal. לדוגמה, הצמתים של Stack זקוקים למידע הזה במקרים הבאים:
- הכללת כתובת URL בתשובות לבקשות API של BaaS.
- הוספת קישורים בתבניות אימייל כשמאפסים סיסמה או שולחים התראות אחרות.
- הפניית משתמשים לדפי פורטל ספציפיים.
אם משתמשים במאזן עומסים לפני צומתי ה-Stack או מגדירים TLS בצומת Stack, צריך להגדיר את המאפיין הבא ב-/opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_usergrid.api.url.base=http://localhost:8080
מחליפים את http://localhost:8080 בכתובת ה-URL של מאזן העומסים. אם מאזן העומסים מוגדר לשימוש ב-TLS, צריך להשתמש בפרוטוקול HTTPS. צריך לכלול את היציאה רק אם משתמשים ביציאה לא סטנדרטית, כלומר יציאה שאינה יציאה 80 ל-HTTP או יציאה 443 ל-HTTPS.
אם אתם משתמשים במאזן עומסים מול צמתים של Stack, צריך גם להגדיר את המאפיין הבא בקובץ /opt/apigee/customer/application/portal.properties :
baas.portal.config.overrideUrl=http://localhost:8080
מחליפים את http://localhost:8080 בכתובת ה-URL של מאזן העומסים של ה-Stack.
אם משתמשים במאזן עומסים לפני צומת הפורטל או מגדירים TLS בצומת ה-Stack, צריך להגדיר את המאפיינים הבאים בקובץ usergrid.properties:
usergrid-deployment_portal.url=http://localhost:9000
מחליפים את http://localhost:9000 בכתובת ה-URL של מאזן העומסים. אם מוגדר מאזן העומסים להשתמש ב-TLS, צריך להשתמש בפרוטוקול HTTPS. צריך לכלול את היציאה רק אם משתמשים ביציאה לא סטנדרטית, כלומר יציאה שאינה יציאה 80 ל-HTTP או יציאה 443 ל-HTTPS.
אחרי שעורכים את usergrid.properties:
- מגדירים את צומת ה-Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - מפעילים מחדש את סטאק BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - אם שיניתם את portal.properties, מגדירים את צומת הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configuration - מפעילים מחדש את BaaS Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart