הגדרת SNI בין מעבד ההודעות של הקצה לבין שרת הקצה העורפי

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

Server Name Indication (SNI) – מאפשר הצגה של מספר שרתי קצה עורפי של HTTPS כתובת IP ויציאה בלי לדרוש מהשרתים העורפיים האלה להשתמש באותו אישור TLS. זו הרחבה של פרוטוקול TLS. כש-SNI מופעל אצל לקוח, הלקוח עובר שם המארח של שרת הקצה העורפי כחלק מלחיצת היד הראשונית של TLS. הפעולה הזו מאפשרת שרת TLS כדי לקבוע באיזה אישור TLS יש להשתמש כדי לאמת את הבקשה הלקוח.

כברירת מחדל, SNI מושבת ברכיב מעבד ההודעות ב-Edge בענן הפרטי כדי להבטיח תאימות לאחור עם השרתים העורפיים הקיימים. אם שרת הקצה העורפי שלכם מוגדר לתמיכה ב-SNI, אז עליך להפעיל את ה-SNI ברכיב מעבד ההודעות. אחרת, בקשות ה-API שעוברות דרך Apigee Edge ייכשלו כשלים לחיצת יד של TLS.

במסמך הזה נסביר איך לבצע את הפעולות הבאות:

לפני שמתחילים

זיהוי של שרת התומך ב-SNI

הקטע הזה מתאר איך לזהות אם שרת עורפי מופעל SNI או לא.

  1. מריצים את הפקודה openssl ומנסים להתחבר לשם המארח הרלוונטי של השרת. (נתב קצה או שרת קצה עורפי) בלי להעביר את שם השרת, כפי שמוצג בהמשך:
    openssl s_client -connect hostname:port
    
  2. ייתכן שתקבלו את האישורים, ולפעמים תבחינו בכשל בלחיצת היד הפקודה openssl, כמו שמוצג בהמשך:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  3. מריצים את הפקודה openssl ומנסים להתחבר לשרת הרלוונטי. שם המארח (נתב קצה או שרת קצה עורפי) על ידי העברת שם השרת כפי שמוצג בהמשך:
    openssl s_client -connect hostname:port -servername hostname
    
  4. אם נתקלתם בבעיה בלחיצת היד בשלב 1 או שקיבלתם אישורים שונים בשלב 1 ובשלב 2, אז הוא מציין שהשרת שצוין מופעל SNI.
  5. כדי לאמת את זה עבור יותר משרת קצה עורפי אחד, צריך צריך לחזור על השלבים שלמעלה עבור כל שרת עורפי.

אם יש לכם שרת עורפי אחד או יותר שמופעל בהם SNI, תצטרכו להפעיל SNI ברכיב מעבד ההודעות כמו שמוסבר בהמשך. אחרת, ה-API בקשות שעוברות דרך Apigee Edge ייכשלו כשלים לחיצת יד של TLS.

הפעלת SNI בין מעבדי הודעות קצה לבין שרת עורפי

בקטע הזה מוסבר איך להפעיל SNI בין מעבד ההודעות של Edge לבין הקצה העורפי השרת. ניתן להפעיל SNI באמצעות המאפיין jsse.enableSNIExtension ב- רכיב מעבד ההודעות. כדי להגדיר מאפיין במעבד ההודעות, את האסימון לפי התחביר שמתואר איך מגדירים את Edge?

כדי להפעיל SNI במעבדי ההודעות, מבצעים את השלבים הבאים:

  1. איתור אסימון לנכס jsse.enableSNIExtension
  2. הפעלת SNI במעבד ההודעות

איתור אסימון לנכס jsse.enableSNIExtension

בשלבים הבאים מוסבר איך לאתר את האסימון של מאפיין jsse.enableSNIExtension:

  1. חיפוש המאפיין jsse.enableSNIExtension במקור של מעבד ההודעות הספרייה /opt/apigee/edge-message-processor/source באמצעות הפקודה הבאה:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. בפלט של הפקודה הזו מוצג האסימון למאפיין של מעבד ההודעות jsse.enableSNIExtension באופן הזה:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    כשהמחרוזת בין התגים {T}{/T} היא השם של האסימון שאפשר להגדיר בקובץ .properties של מעבד ההודעות.

    לדוגמה, האסימון של הנכס jsse.enableSNIExtension הוא:

    conf_system_jsse.enableSNIExtension
    

הפעלת SNI במעבד ההודעות

השלבים הבאים מתארים איך להפעיל SNI ברכיב מעבד ההודעות של Apigee.

  1. במעבד הודעות, פותחים את הקובץ הבא בעורך. אם לא ניתן כבר קיים, אז יוצרים אותו.
    /opt/apigee/customer/application/message-processor.properties
    

    לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפקודה הבאה:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. מוסיפים לקובץ המאפיינים שורה בפורמט הבא:
    conf_system_jsse.enableSNIExtension=true
    
  3. שומרים את השינויים.
  4. יש לוודא שקובץ המאפיינים הזה נמצא בבעלות של המשתמש apigee, כפי שמוצג בהמשך:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. צריך להפעיל מחדש את מעבד ההודעות כפי שמוצג בהמשך:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. לוודא שהגדרות ה-SNI מעודכנות מעבד הודעות.
  7. אם יש לכם יותר ממעבד הודעות אחד, צריך לחזור על השלבים האלה בכל מעבדי הודעות.

השבתת SNI בין מעבדי הודעות קצה לבין שרת עורפי

בדרך כלל, לא אמורות להופיע בעיות לאחר הפעלת SNI. אבל אם תבחינו כל בעיית קישוריות בין מעבד ההודעות של Edge לבין שרת הקצה העורפי לאחר תמיד אפשר להשבית את ה-SNI על ידי ביצוע השלבים הבאים.

אפשר להשבית את SNI באמצעות הגדרת המאפיין jsse.enableSNIExtension בחזרה אל false ברכיב מעבד ההודעות.

השבתת SNI במעבדי ההודעות

בשלבים הבאים מוסבר איך להשבית SNI במעבדי ההודעות של Apigee.

  1. במעבד הודעות, פותחים את הקובץ הבא בעורך. אם לא ניתן כבר קיים, אז יוצרים אותו.
    /opt/apigee/customer/application/message-processor.properties
    

    לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפקודה הבאה:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. אם השורה conf_system_jsse.enableSNIExtension=true נמצאת בה /opt/apigee/customer/application/message-processor.properties, ולאחר מכן יש לשנות אותו בתור ככה:
    conf_system_jsse.enableSNIExtension=false
    
  3. שומרים את השינויים.
  4. יש לוודא שקובץ המאפיינים הזה נמצא בבעלות של המשתמש apigee, כפי שמוצג בהמשך:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. צריך להפעיל מחדש את מעבד ההודעות כפי שמוצג בהמשך:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. לוודא שהגדרות ה-SNI מעודכנות מעבד הודעות.
  7. אם יש לכם יותר ממעבד הודעות אחד, צריך לחזור על השלבים שלמעלה בכל מעבדי הודעות.

אימות של תצורת SNI במעבדי ההודעות

בקטע הזה מוסבר איך לוודא שתצורת ה-SNI בוצעה בהצלחה שעודכנו במעבדי ההודעות.

למרות שאתם משתמשים באסימון conf_system_jsse.enableSNIExtension כדי להגדיר SNI במעבד ההודעות, עליך לוודא שהמאפיין jsse.enableSNIExtension הוגדר עם הערך החדש.

  1. במעבד ההודעות, מחפשים את המאפיין jsse.enableSNIExtension. בספרייה /opt/apigee/edge-message-processor/conf ולבדוק אם הוגדר עם הערך החדש כפי שמוצג בהמשך:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. אם תצורת ה-SNI עודכנה בהצלחה במעבד ההודעות, אז הפקודה שלמעלה מציגה את הערך החדש בקובץ system.properties.

    התוצאה לדוגמה מהפקודה שלמעלה לאחר הפעלת SNI במעבד ההודעות הוא:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
    

    באופן דומה, התוצאה לדוגמה מהפקודה שלמעלה לאחר השבתת ה-SNI כך מעבד ההודעות:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
    

    בפלט לדוגמה שלמעלה, שימו לב שהמאפיין jsse.enableSNIExtension עודכן לערך החדש true או false ב- system.properties זה מציין ש-SNI הופעל בהצלחה מושבת במעבד ההודעות.

  3. אם עדיין מופיע הערך הישן של הנכס jsse.enableSNIExtension, לוודא שביצעת את כל השלבים המפורטים בקטע המתאים כדי להפעיל את או להשבית את SNI בצורה נכונה. אם פספסתם שלב כלשהו, יש לחזור על השלבים האלה שוב בצורה נכונה.
  4. אם עדיין אין לך אפשרות להפעיל/להשבית את SNI , עליך לפנות אל תמיכה ב-Apigee Edge.