הגדרת TLS ל-API BaaS

Edge for Private Cloud v4.18.01

‫TLS (פרוטוקול Transport Layer Security, שהחליף את SSL) הוא טכנולוגיית האבטחה הסטנדרטית להעברת הודעות מוצפנות ומאובטחות בסביבת ה-API. אפשר להגדיר TLS בצמתים של API BaaS Portal ו-API BaaS Stack.

בתמונה הבאה מוצג תרשים פריסה אופייני ל-API BaaS עם צומת אחד של פורטל BaaS ושלושה צמתים של 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 כך שישתמש ביציאה אחרת. הדרישה היחידה היא שחומת האש תאפשר תנועה ביציאה שצוינה.

המחסנית יכולה לתמוך רק בסוג אחד של בקשה (HTTP או HTTPS) דרך יציאה אחת. לכן, אם מגדירים גישת HTTPS ביציאה 8080, אי אפשר להשתמש ב-HTTP כדי לגשת ליציאה 8080. אם מגדירים את Stack לשימוש ביציאה 8443 עם HTTPS, ‏ Stack לא יאזין יותר ליציאה 8080.

כדי להגדיר גישת TLS ל-Stack:

  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
    # By default, TLS access uses port 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. מגדירים את צומת ה-Stack:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. מפעילים מחדש את BaaS Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. כדי לוודא ש-TLS פועל, מריצים את פקודת ה-cURL הבאה בצומת Stack באמצעות HTTPS:
    > curl -k https://localhost:8080/status -v

    אם TLS מוגדר בצורה נכונה, אמורה להתקבל תשובה שמכילה מידע על הסטטוס.

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

    אם הפורטל שולח בקשות ישירות ל-Stack, צריך להגדיר את הפורטל כך שייגש ל-Stack באמצעות HTTPS, כמו שמתואר בקטע הבא.
  10. כדי לוודא שלצומת ה-Stack יש את כתובות ה-TLS הנכונות כשהוא יוצר תגובות למשתמשים, צריך להשתמש בהליך שמתואר בהמשך בקטע "הגדרת צומתי API BaaS Stack ל-TLS ב-Stack או בפורטל".

הגדרת הפורטל לגישה ל-Stack באמצעות TLS

פורטל BaaS שפועל בדפדפן מבצע קריאות ל-API אל BaaS Stack. אם מגדירים את BaaS Stack לשימוש ב-TLS, צריך גם להגדיר את הפורטל כדי לבצע את הקריאות האלה דרך HTTPS.

בדרך כלל, התקנת API BaaS מוגדרת באחת מהדרכים הבאות:

  • שימוש במאזן עומסים בין צומתי Portal ו-Stack

    מגדירים את מאזן העומסים כך שישלח בקשות לצומתי Stack באמצעות HTTPS. מידע נוסף זמין במסמכי התיעוד של מאזן העומסים.

    בהגדרה הזו, הפורטל יכול לגשת למאזן העומסים דרך HTTP או HTTPS, בהתאם לאופן שבו מגדירים את מאזן העומסים. אם מאזן העומסים משתמש ב-TLS, צריך להשתמש בהליך הבא כדי להגדיר את הפורטל כך שישלח בקשות למאזן העומסים של HTTPS.
  • הגדרת הפורטל לשליחת בקשות ישירות ל-Stack

    מגדירים את הפורטל כך שייגש ל-Stack דרך HTTPS, כמו שמתואר בהמשך.

כדי להגדיר את פורטל API BaaS לביצוע קריאות ל-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 מהפורטל. אם מופיעה בדפדפן שגיאה שלפיה אין גישה ל-Stack באמצעות HTTPS, צריך לבקש את כתובת ה-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
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # By default, TLS access uses port 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.
  5. מגדירים את צומת הפורטל:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. מפעילים מחדש את הפורטל:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  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 Stack:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. אם שיניתם את portal.properties, מגדירים את צומת הפורטל:??
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. מפעילים מחדש את פורטל BaaS:
    > ‎/opt/apigee/apigee-service/bin/apigee-service baas-portal restart