הגדרת TLS ל-API BaaS

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 למקבץ יש לבצע את התהליך הבא:

  1. יוצרים את קובץ ה-JKS של מאגר המפתחות שמכיל את אישור ה-TLS ואת המפתח הפרטי. מידע נוסף זמין במאמר הגדרת TLS/SSL ל-Edge On Premises.
    הערה: חשוב לוודא שהסיסמה במאגר המפתחות ובמפתח זהה.
  2. מעתיקים את קובץ ה-JKS של מאגר המפתחות לתיקייה בצומת ה-Stack, למשל /opt/apigee/customer/application. הספרייה צריכה להיות נגישה למשתמש 'apigee'.
  3. משנים את הבעלות של קובץ ה-JKS למשתמש 'apigee':
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    כאשר keystore.jks הוא השם של קובץ מאגר המפתחות.
  4. עורכים את הקובץ /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.
  5. מגדירים את צומת המקבץ:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid בתהליך
  6. מפעילים מחדש את מקבץ BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid מחדש
  7. כדי לוודא ש-TLS פועל, מריצים את פקודת cURL הבאה בצומת ה-Stack באמצעות HTTPS:
    > curl -k https://localhost:8080/status -v

    אם ה-TLS מוגדר כראוי, אמורה להופיע תגובה עם פרטי הסטטוס.

    אם הגדרתם גישת TLS ביציאה שאינה 8080, משנים את הפקודה שלמעלה כך שתשתמש ביציאה הנכונה.
  8. חוזרים על הפעולה בכל צומתי המקבץ.
  9. אם יש לכם מאזן עומסים לפני צמתים של Stack, צריך להגדיר את מאזן העומסים כך שישלח בקשות לצמתים של Stack דרך HTTPS. מידע נוסף זמין במסמכי העזרה של מאזן העומסים.

    אם הפורטל שולח בקשות ישירות ל-Stack, צריך להגדיר את הפורטל לגשת ל-Stack דרך HTTPS כפי שמתואר בקטע הבא.
  10. כדי לוודא שלצומת ה-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:

  1. מגדירים גישת TLS ב-BaaS Stack כפי שמתואר למעלה, או במאזן העומסים של צומתי ה-Stack, כפי שמתואר במסמכי התיעוד של מאזן העומסים.
  2. עורכים את הקובץ /opt/apigee/customer/application/portal.properties כדי להגדיר את המאפיין הבא. אם הקובץ הזה לא קיים, יוצרים אותו:
    baas.portal.config.overrideUrl=https://stackIP:port

    מציינים כערך של המאפיין הזה את כתובת ה-IP או שם ה-DNS והיציאה של צומת API Stack להתקנה של צומת יחיד, או של מאזן העומסים אם יש מאזן עומסים מול צומתי API BaaS Stack.
  3. מגדירים את צומת הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. מפעילים מחדש את הפורטל באמצעות הפקודה:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. אם השתמשתם באישור בחתימה עצמית כשהגדרתם את הגישה ל-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 לפורטל:

  1. יוצרים קובץ מפתח וקובץ אישור בפורמט PEM.
    הערה: חשוב לוודא שאין סיסמה או ביטוי סיסמה במפתח או בתעודה.
  2. מעתיקים את קובצי ה-PEM לספרייה בצומת הפורטל, למשל /opt/apigee/customer/application. הספרייה צריכה להיות נגישה למשתמש 'apigee'.
  3. משנים את הבעלות על קובצי ה-PEM למשתמש apigee:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. עורכים את הקובץ /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.
  5. מגדירים את צומת הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. מפעילים מחדש את הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal מחדש
  7. כדי לוודא שלצומת ה-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:

  1. מגדירים את צומת ה-Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. מפעילים מחדש את סטאק BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. אם שיניתם את portal.properties, מגדירים את צומת הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configuration
  4. מפעילים מחדש את BaaS Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart