הגדרת TLS ל-API BaaS

Edge for Private Cloud גרסה 4.18.01

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

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

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

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

אפשרויות ההגדרה של TLS

יש כמה אפשרויות להגדרת TLS ל-API BaaS:

  • הגדרת TLS בפורטל ובמאזן העומסים לצמתים במקבץ

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

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

    בסביבה קטנה, כמו סביבת בדיקה או פיתוח, ייתכן שיש לך רק צומת Stack אחד, כלומר לא צריך לכלול מאזן עומסים. בתצורה הזו, להגדיר TLS גם בפורטל וגם בצומת המקבץ.
  • הגדרת 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 של הצומת של המקבץ והיציאה 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 שטחים.
    הערה: צריך לוודא שהסיסמה של מאגר המפתחות ושל המפתח זהה.
  2. מעתיקים את קובץ ה-JKS של מאגר המפתחות לספרייה בצומת Stack, כמו /opt/apigee/customer/application. הספרייה חייבת להיות נגישה ל-'apigee' משתמש.
  3. שינוי הבעלות על קובץ ה-JKS ל-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.
    # משתמשים במאפיין הזה כדי לציין יציאה אחרת.
    # tomcat-server_port=8080


    אזהרה: הערך password חייב להיות בטקסט ברור. לכן צריך להגן על usergrid.properties מפני גישה בלתי מורשית גישה.

    שימוש ברכיב tomcat-server_keyalias כדי לציין את הכינוי של מאגר המפתחות. הגדרתם את הכינוי החלופי בזמן שיצרתם את המפתח. לדוגמה, אפשר להגדיר אותו באמצעות האפשרות -alias בפקודה -alias.

    שימוש ב-tomcat-server_ssl.protocols כדי להגדיר פרוטוקולים של TLS שנתמכים על ידי המקבץ. לרשימת הפרוטוקולים שנתמכים ב-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 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. חוזרים על הפעולה בכל צומתי המקבץ.
  9. אם יש מאזן עומסים לפני צומתי המקבץ, צריך להגדיר מאזן עומסים לשליחת בקשות לצומתי המקבץ ב-HTTPS. עיינו במסמכי התיעוד בכתובת לקבלת מידע נוסף.

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

מתבצעת הגדרה הפורטל כדי לגשת למקבץ באמצעות TLS

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

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

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

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

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

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

כך מגדירים את פורטל ה-API BaaS Portal לביצוע קריאות ל-API ב-HTTPS:

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

הגדרת צומתי API BaaS ל-TLS ב- מקבץ או פורטל

אם כוללים מאזן עומסים לפני צומתי Stack או פורטל, או אם מפעילים TLS. ישירות בצומת 'פורטל' או 'מקבץ', צריך להגדיר את הצמתים עם כתובות ה-URL הנכונות כדי גישה ל-Stack ולפורטל. לדוגמה, צומתי המקבץ דורשים את המידע הזה כאשר:

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

אם משתמשים במאזן עומסים לפני צומתי המקבצים או מגדירים 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 אם משתמשים במאזן עומסים לפני צומתי המקבץ:

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. הגדרת הצומת של המקבץ:
    > /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 configuration
  4. הפעלה מחדש של פורטל BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal מחדש