הגדרת TLS ל-API BaaS

Edge for Private Cloud גרסה 4.18.01

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

בתמונה הבאה מוצג תרשים פריסה אופייני של ממשקי BaaS API, עם צומת אחד של פורטל BaaS ושלושה צמתים של מקבץ BaaS של API.

מפתחים משתמשים בדפדפן כדי לשלוח בקשות לפורטל. כברירת מחדל, הבקשות משתמשות בפרוטוקול HTTP ביציאה 9000 של צומת הפורטל.

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

אפשרויות תצורה של TLS

כשמגדירים TLS עבור ממשקי BaaS של API, עומדות לרשותכם כמה אפשרויות:

  • הגדרת 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 בסטאק BaaS של API

כברירת מחדל, TLS מושבת עבור מקבץ של ממשקי BaaS של API. לאחר מכן אפשר לגשת ל-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. אם מגדירים את המקבץ לשימוש ביציאה 8443 עם HTTPS, המערכת לא תאזין יותר ביציאה 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 הוא השם של קובץ ה-Keystore.
  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_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 configuration
  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. חוזרים על הפעולה בכל צומתי ה-Stack.
  9. אם יש מאזן עומסים לפני צומתי ה-Stack, כדאי להגדיר את מאזן העומסים כך שישלח בקשות לצומתי Stack ב-HTTPS. למידע נוסף, אפשר לעיין במסמכי העזרה של מאזן העומסים.

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

הגדרת הפורטל לגישה ל-Stack ב-TLS (אבטחת שכבת התעבורה)

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

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

  • שימוש במאזן עומסים בין הפורטל לצומתי Stack

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

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

    מגדירים את הפורטל כך שיקבל גישה ל-Stack ב-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 להתקנה של צומת יחיד, או של מאזן העומסים אם יש מאזן עומסים לפני צומתי BaaS של ה-API.
  3. מגדירים את צומת הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configuration
  4. מפעילים מחדש את הפורטל באמצעות הפקודה:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal הפעלה מחדש
  5. אם השתמשתם באישור בחתימה עצמית כשהגדרתם גישה באמצעות TLS ל-Stack למעלה, יכול להיות שהדפדפן שלכם לא יאפשר בקשות ל-Stack מהפורטל. אם מופיעה שגיאה בדפדפן שלפיה לא מתאפשרת גישת HTTPS ל-Stack, אפשר לבקש את כתובת ה-URL הבאה בדפדפן ולהוסיף חריגת אבטחה כדי לאפשר גישה:
    https://stackIP:port/status

    יש לציין את כתובת ה-IP או את שם ה-DNS והיציאה של הצומת של API Stack או מאזן העומסים.

הגדרת TLS בפורטל BaaS של ה-API

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


    # יש להשתמש במאפיין הזה לציון יציאה אחרת.
    # 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 configuration
  6. מפעילים מחדש את הפורטל:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal מחדש
  7. כדי לוודא שלצומת ה-Stack יש את כתובת ה-URL הנכונה ל-TLS (אבטחת שכבת התעבורה) בפורטל, משתמשים בתהליך שמתואר למטה בקטע 'הגדרת צומתי API ב-TLS (אבטחת שכבת התעבורה) ל-TLS ב-TLS ב-Stack או בפורטל.

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

אם כוללים מאזן עומסים לפני הצמתים ב-Stack או בפורטל, או כשמפעילים TLS ישירות בצומת הפורטל או ה-Stack, צריך להגדיר לצמתים את כתובות ה-URL הנכונות כדי לגשת ל-Stack ולפורטל. לדוגמה, צומתי ה-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.

צריך גם להגדיר את המאפיין הבא ב-/opt/apigee/customer/application/portal.properties אם משתמשים במאזן עומסים מול צומתי ה-Stack:

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 configuration
  2. מפעילים מחדש את מחסנית BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid הפעלה מחדש
  3. אם שיניתם את portal.properties, צריך להגדיר את הצומת של הפורטל:??
    > הגדרה של /opt/apigee/apigee-service/bin/apigee-service baas-portal
  4. מפעילים מחדש את BaaS Portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal מחדש