Edge for Private Cloud גרסה 4.16.09
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, וצומת מקבץ 8080. עם זאת, אפשר לשנות את היציאה הזו אם רוצים.
ללא קשר ליציאה שבה אתם משתמשים, עליכם לוודא שהיציאה פתוחה בצומת. לדוגמה, משתמשים בפקודה הבאה כדי לפתוח את היציאה 8443:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
הגדרת TLS במקבץ BaaS של API
כברירת מחדל, 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 ב-Stack, פועלים לפי השלבים הבאים:
- יוצרים את קובץ ה-JKS של מאגר המפתחות שמכיל את אישור ה-TLS ואת המפתח הפרטי שלכם. מידע נוסף זמין במאמר הגדרת TLS/SSL (אבטחת שכבת התעבורה) ב-Edge Ones.
הערה: חשוב לוודא שהסיסמה במאגר המפתחות ובמפתח זהה. - מעתיקים את קובץ ה-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 והסיסמה במאגר המפתחות ובמפתח.
/opt/apigee/customer/application/keystore.jks
# 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. - מגדירים את צומת ה-Stack:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - פורסים את השינויים ב-Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - מפעילים מחדש את סטאק BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - כדי לוודא ש-TLS פועל, מריצים את הפקודה הבאה של cURL בצומת ה-Stack באמצעות HTTPS:
> curl -k https://localhost:8080/status -v
אם הגדרת ה-TLS נכונה, אמורה להופיע תגובה עם פרטי הסטטוס.
אם הגדרתם גישת TLS ביציאה שאינה 8080, משנים את הפקודה שלמעלה כך שתשתמש ביציאה הנכונה. - חוזרים על הפעולה בכל צמתים של ה-Stack.
- אם יש לכם מאזן עומסים לפני צמתים של Stack, צריך להגדיר את מאזן העומסים כך שישלח בקשות לצמתים של Stack דרך HTTPS. מידע נוסף זמין במשאבי העזרה של
מאזן העומסים.
אם הפורטל שולח בקשות ישירות ל-Stack, צריך להגדיר את הפורטל לגשת ל-Stack דרך HTTPS כפי שמתואר בקטע הבא. - כדי לוודא שלצומת ה-Stack יש את כתובות ה-URL הנכונות של TLS בזמן יצירת התשובות של המשתמשים, צריך לפעול לפי התהליך שמתואר בקטע 'הגדרת צמתים של API BaaS Stack ל-TLS ב-Stack או בפורטל'.
הגדרת הפורטל לגישה ל-Stack דרך TLS
פורטל BaaS שפועל בדפדפן פועל על ידי שליחת קריאות ל-API למקבץ BaaS. אם מגדירים את סטאק BaaS לשימוש ב-TLS, צריך גם להגדיר את הפורטל לבצע את הקריאות האלה דרך HTTPS.
בדרך כלל, התקנה של API BaaS מוגדרת לאחת מהאפשרויות הבאות:
- שימוש במאזן עומסים בין הפורטל לבין צמתים ב-Stack
מגדירים את מאזן העומסים כך שישלח בקשות לצמתים ב-Stack דרך HTTPS. מידע נוסף זמין במשאבי העזרה של מאזן העומסים.
בתצורה הזו, לפורטל יש גישה למאזן העומסים דרך HTTP או HTTPS, בהתאם להגדרה של מאזן העומסים. אם מאזן העומסים משתמש ב-TLS, צריך לפעול לפי התהליך שבהמשך כדי להגדיר את הפורטל כך שישלח בקשות למאזן העומסים של HTTPS. - לאפשר לפורטל לשלוח בקשות ישירות ל-Stack
מגדירים את הפורטל כך שיהיה לו גישה ל-Stack דרך 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, או של מאזן העומסים אם יש מאזן עומסים לפני צומת ה-API. - מגדירים את צומת הפורטל:
> /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 לספרייה בצומת ה-Portal, למשל /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
baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
# כברירת מחדל, גישה ל-TLS משתמשת ביציאה 9000.
# Use this property to specify a different port.
# baas.portal.listen=9000
צריך להשתמש ב-baas.portal.ssl.protocols כדי להגדיר את הפרוטוקולים של TLS שנתמכים בפורטל. לרשימת הפרוטוקולים הנתמכים, אפשר לעיין ברשימת שמות הפרוטוקולים של 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 deploy - מפעילים מחדש את הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - כדי לוודא שלצומת ה-Stack יש את כתובת ה-URL הנכונה של TLS לפורטל, צריך לפעול לפי התהליך שמתואר בקטע 'הגדרת צמתים של API BaaS Stack ל-TLS ב-Stack או בפורטל'.
הגדרת צמתים של API BaaS ל-TLS ב-Stack או ב-Portal
אם כוללים מאזן עומסים לפני צמתים של Stack או Portal, או מפעילים TLS ישירות בצומת של Portal או Stack, צריך להגדיר את הצמתים עם כתובות ה-URL הנכונות כדי לגשת ל-Stack ול-Portal. לדוגמה, צומתי המקבץ דורשים את המידע הזה כאשר:
- הכללת כתובת URL בתשובות לבקשות API של BaaS.
- הוספת קישורים בתבניות אימייל כשמאפסים סיסמה או שולחים התראות אחרות.
- הפניית משתמשים לדפי פורטל ספציפיים.
אם משתמשים במאזן עומסים לפני צמתים של Stack או מגדירים TLS בצומת Stack, צריך להגדיר את המאפיינים הבאים בקובץ /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_swagger.basepath=http://localhost:8080 usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
מחליפים את 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_usergrid.view.management.organizations.organization.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.confirm=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 - פורסים את השינויים ב-Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - מפעילים מחדש את סטאק BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - אם שיניתם את portal.properties, מגדירים את צומת הפורטל:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configuration - פורסים את השינויים:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - מפעילים מחדש את BaaS Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart