הגדרת TLS עבור ממשק ה-API לניהול

כברירת מחדל, ה-TLS מושבת בממשק ה-API לניהול, והגישה לממשק ה-API לניהול של Edge מתבצעת באמצעות HTTP באמצעות כתובת ה-IP של צומת שרת הניהול והיציאה 8080. לדוגמה:

http://ms_IP:8080

לחלופין, אפשר להגדיר גישה ל-TLS לממשק ה-API לניהול כדי לגשת אליו בטופס:

https://ms_IP:8443

בדוגמה הזו, מגדירים גישה ל-TLS באמצעות יציאה 8443. עם זאת, מספר היציאה הזה לא נדרש ל-Edge – אפשר להגדיר את שרת הניהול כך שישתמש בערכים אחרים של יציאות. הדרישה היחידה היא שחומת האש תאפשר תעבורת נתונים ביציאה שצוינה.

כדי להבטיח את הצפנת התנועה אל Management API וממנו, צריך להגדיר את ההגדרות בקובץ /opt/apigee/customer/application/management-server.properties.

בנוסף להגדרת TLS, אפשר גם לשלוט באימות הסיסמה (אורך הסיסמה וחוזק שלה) על ידי שינוי הקובץ management-server.properties.

צריך לוודא שיציאת ה-TLS פתוחה

התהליך שמתואר בקטע הזה מגדיר את TLS כך שישתמש ביציאה 8443 בשרת הניהול. לא משנה באיזו יציאה אתם משתמשים, עליכם לוודא שהיציאה פתוחה בשרת הניהול. לדוגמה, אפשר להשתמש בפקודה הבאה כדי לפתוח אותו:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

הגדרת TLS

עורכים את הקובץ /opt/apigee/customer/application/management-server.properties כדי לשלוט בשימוש ב-TLS בתעבורת הנתונים אל Management API וממנו. אם הקובץ הזה לא קיים, יוצרים אותו.

כדי להגדיר גישה ל-TLS ל-Management API:

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

    כאשר keystore.jks הוא השם של קובץ מאגר המפתחות.

  4. עורכים את /opt/apigee/customer/application/management-server.properties כדי להגדיר את המאפיינים הבאים. אם הקובץ הזה לא קיים, יוצרים אותו:
    conf_webserver_ssl.enabled=true
    # Leave conf_webserver_http.turn.off set to false
    # because many Edge internal calls use HTTP.
    conf_webserver_http.turn.off=false
    conf_webserver_ssl.port=8443
    conf_webserver_keystore.path=/opt/apigee/customer/application/keystore.jks
    # Enter the obfuscated keystore password below.
    conf_webserver_keystore.password=OBF:obfuscatedPassword

    כאשר keyStore.jks הוא קובץ מאגר המפתחות, ו-obfuscatedPassword הוא הסיסמה המעורפלת של מאגר המפתחות. למידע על יצירת סיסמה מעורפלת, ראו הגדרת TLS/SSL ל-Edge On Premises.

  5. מפעילים מחדש את שרת הניהול של Edge באמצעות הפקודה:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

מעכשיו יש ב-Management API תמיכה בגישה דרך TLS.

הגדרת ממשק המשתמש של Edge כך שישתמש ב-TLS כדי לגשת ל-Edge API

בתהליך שלמעלה, ב-Apigee המליצו להשאיר את conf_webserver_http.turn.off=false כדי ש-Edge UI יוכל להמשיך לבצע קריאות ל-Edge API דרך HTTP.

כדי להגדיר את ממשק המשתמש של Edge לבצע את הקריאות האלה רק דרך HTTPS:

  1. מגדירים גישה ל-TLS ל-Management API כפי שמתואר למעלה.
  2. אחרי שמוודאים ש-TLS פועל בממשק ה-API לניהול, עורכים את הקובץ /opt/apigee/customer/application/management-server.properties כדי להגדיר את המאפיין הבא:
    conf_webserver_http.turn.off=true
  3. מריצים את הפקודה הבאה כדי להפעיל מחדש את שרת ניהול הקצה:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart 
  4. עורכים את /opt/apigee/customer/application/ui.properties כדי להגדיר את המאפיין הבא לממשק המשתמש של Edge:
    conf_apigee_apigee.mgmt.baseurl="https://FQ_domain_name:port/v1"

    כאשר FQ_domain_name הוא שם הדומיין המלא, בהתאם לכתובת האישור של שרת הניהול, ו-port הוא היציאה שצוינה למעלה על ידי conf_webserver_ssl.port.

    אם ui.properties לא קיים, יוצרים אותו.

  5. רק אם השתמשתם באישור בחתימה עצמית (לא מומלץ בסביבת ייצור) כשהגדרתם את הגישה ל-TLS לממשק ה-API לניהול שלמעלה, צריך להוסיף את המאפיין הבא ל-ui.properties:
    conf/application.conf+play.ws.ssl.loose.acceptAnyCertificate=true

    אחרת, ממשק המשתמש של Edge ידחה אישור עם חתימה עצמית.

  6. כדי להפעיל מחדש את ממשק המשתמש של Edge, מריצים את הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

שימוש במאגר מפתחות PKCS12 למערכות הפעלה שתומכות ב-FIPS

אם אתם משתמשים ב-Edge for Private Cloud במערכת הפעלה שתומכת ב-FIPS, עליכם להשתמש במאגר מפתחות מסוג PKCS12. הדבר נדרש כדי לעמוד בסטנדרטים של FIPS. בנוסף להגדרות הרגילות האחרות שמוזכרות במאמר הזה, צריך להוסיף את ההגדרות הבאות לקובץ management-server.properties:

conf/webserver.properties+keystore.type=PKCS12

אם הסביבה שלכם מותאמת ל-FIPS, חשוב להחיל את השינוי הזה כדי להבטיח תאימות לתקני ההצפנה הנדרשים.

מאפייני TLS לשרת הניהול

בטבלה הבאה מפורטים כל מאפייני ה-TLS/‏SSL שאפשר להגדיר ב-management-server.properties:

מאפיינים תיאור

conf_webserver_http.port=8080

ברירת המחדל היא 8080.

conf_webserver_ssl.enabled=false

כדי להפעיל/להשבית TLS/SSL. כש-TLS/‏SSL מופעל (true), צריך להגדיר גם את המאפיינים ssl.port ו-keystore.path.

conf_webserver_http.turn.off=true

כדי להפעיל או להשבית את http יחד עם https. אם רוצים להשתמש רק ב-HTTPS, משאירים את ערך ברירת המחדל true.

conf_webserver_ssl.port=8443

יציאת ה-TLS/‏SSL.

נדרש כש-TLS/SSL מופעל (conf_webserver_ssl.enabled=true).

conf_webserver_keystore.path=path

הנתיב לקובץ מאגר המפתחות.

נדרש כש-TLS/SSL מופעל (conf_webserver_ssl.enabled=true).

conf_webserver_keystore.password=password

משתמשים בסיסמה מעורפלת בפורמט הזה: OBF:xxxxxxxxxx

conf_webserver_cert.alias=alias

כינוי חלופי אופציונלי לאישור של מאגר המפתחות

conf_webserver_keymanager.password=password

אם למנהל המפתחות יש סיסמה, מזינים גרסה מעורפלת של הסיסמה בפורמט הזה:

OBF:xxxxxxxxxx

conf_webserver_trust.all=[false | true]

conf_webserver_trust.store.path=path

conf_webserver_trust.store.password=password

מגדירים את ההגדרות של מאגר האמון. קובעים אם רוצים לקבל את כל אישורי TLS או SSL (לדוגמה, כדי לקבל סוגים לא סטנדרטיים). ערך ברירת המחדל הוא false. מציינים את הנתיב למאגר האמון ומזינים סיסמה מעורפלת של מאגר האמון בפורמט הזה:

OBF:xxxxxxxxxx

conf_http_HTTPTransport.ssl.cipher.suites.blacklist=CIPHER_SUITE_1, CIPHER_SUITE_2

conf_http_HTTPTransport.ssl.cipher.suites.whitelist=

מציינים את חבילות הצפנה שרוצים לכלול או להחריג. לדוגמה, אם תגלו נקודת חולשה בהצפנה, תוכלו להחריג אותה כאן. יש להפריד בין הצפנים בפסיקים.

כל הצפנים שתסירו באמצעות רשימת החסימה יקבלו עדיפות על פני כל הצפנים שכלולים ברשימת ההיתרים.

הערה: כברירת מחדל, אם לא צוינו רשימת שחור או רשימת לבן, הצפנות שתואמות לביטוי הרגולרי הבא ב-Java יוצאו משימוש כברירת מחדל.

^.*_(MD5|SHA|SHA1)$
^TLS_RSA_.*$
^SSL_.*$
^.*_NULL_.*$
^.*_anon_.*$

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

מידע נוסף על סטים של אלגוריתמים להצפנה (cipher suite) ועל ארכיטקטורת קריפטוגרפיה זמין במאמר מסמכי התיעוד של Oracle Providers של Java Cryptography Architecture for JDK 8.

conf_webserver_ssl.session.cache.size=

conf_webserver_ssl.session.timeout=

מספרים שלמים שקובעים:

  • גודל המטמון של סשן TLS/‏SSL (בייטים) לאחסון פרטי סשן של כמה לקוחות.
  • משך הזמן של סשנים של TLS/SSL לפני שהם יפוג (באלפיות שנייה).