אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
התכונה Server Name Indication (SNI) מאפשרת להציג כמה שרתי קצה עורפיים של HTTPS מאותה כתובת IP ומאותה יציאה, בלי לדרוש מהשרתים האלה להשתמש באותו אישור TLS. זהו תוסף לפרוטוקול TLS. כש-SNI מופעל בלקוח, הלקוח מעביר את שם המארח של שרת הקצה העורפי כחלק מהלחיצת יד הראשונית של TLS. ההגדרה הזו מאפשרת לשרת TLS לקבוע באיזה אישור TLS צריך להשתמש כדי לאמת את הבקשה מהלקוח.
כברירת מחדל, SNI מושבת ברכיב מעבד בקשות ב-Edge for the Private Cloud כדי להבטיח תאימות לאחור עם שרתי הקצה העורפי הקיימים. אם שרת ה-Backend שלכם מוגדר לתמיכה ב-SNI, אתם צריכים להפעיל את ה-SNI ברכיב מעבד בקשות. אחרת, בקשות ה-API שעוברות דרך Apigee Edge ייכשלו עם שגיאות בלחיצת היד של TLS.
במאמר הזה נסביר איך:
- איך בודקים אם שרת קצה עורפי מוגדר עם SNI
- מפעילים SNI במעבדי ההודעות כדי לתקשר עם שרתים עורפיים שתומכים ב-SNI
- השבתת SNI במעבדי ההודעות אם צריך
- מוודאים שההגדרה של SNI עודכנה בהצלחה ב-Message Processors
לפני שמתחילים
- אם אתם לא מכירים את SNI, כדאי לקרוא את המאמר בנושא שימוש ב-SNI עם edge.
- אם אתם לא מכירים את ההגדרה של Edge ב-Private Cloud, כדאי לקרוא את המאמר איך מגדירים את Edge.
זיהוי של שרת עם SNI מופעל
בקטע הזה מוסבר איך לזהות אם שרת בק-אנד מופעל באמצעות SNI.
-
מריצים את הפקודה
opensslומנסים להתחבר לשם המארח הרלוונטי של השרת (נתב Edge או שרת עורפי) בלי להעביר את שם השרת, כמו שמוצג בהמשך:openssl s_client -connect hostname:port
-
יכול להיות שתקבלו את האישורים, ולפעמים תראו שהלחיצת יד נכשלה בפקודה
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
-
מריצים את הפקודה
opensslומנסים להתחבר לשם המארח הרלוונטי של השרת (נתב Edge או שרת backend) על ידי העברת שם השרת כמו שמוצג בהמשך:openssl s_client -connect hostname:port -servername hostname
- אם מתקבלת שגיאת לחיצת יד בשלב 1 או אם מתקבלים אישורים שונים בשלב 1 ובשלב 2, המשמעות היא שהשרת שצוין מוגדר עם SNI.
- אם רוצים לאמת את זה ביותר משרת קצה עורפי אחד, צריך לחזור על השלבים שלמעלה לכל שרת קצה עורפי.
אם אתם מגלים שיש לכם שרת קצה עורפי אחד או יותר שמופעל בו SNI, אתם צריכים להפעיל SNI ברכיב Message Processor (מעבד ההודעות) כמו שמוסבר בהמשך. אחרת, בקשות ה-API שעוברות דרך Apigee Edge ייכשלו עם TLS Handshake Failures.
הפעלת SNI בין מעבדי הודעות של Edge לבין שרת קצה עורפי
בקטע הזה מוסבר איך להפעיל SNI בין מעבד ההודעות של Edge לבין שרת הקצה העורפי. אפשר להפעיל את SNI דרך המאפיין jsse.enableSNIExtension ברכיב מעבד בקשות. כדי להגדיר מאפיין כלשהו ב-מעבד בקשות, משתמשים בטוקן בהתאם לתחביר שמתואר במאמר איך מגדירים את Edge.
כדי להפעיל SNI במעבדי ההודעות, מבצעים את השלבים הבאים:
איתור הטוקן של הנכס jsse.enableSNIExtension
כדי לאתר את האסימון של הנכס jsse.enableSNIExtension:
-
מחפשים את המאפיין
jsse.enableSNIExtensionבספריית המקור של Message Processor/opt/apigee/edge-message-processor/sourceבאמצעות הפקודה הבאה:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
הפלט של הפקודה הזו מציג את האסימון של המאפיין
jsse.enableSNIExtensionשל מעבד ההודעות, באופן הבא:/opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}כאשר המחרוזת שבין התגים
{T}{/T}היא שם האסימון שאפשר להגדיר בקובץ.propertiesשל Message Processor.לכן, האסימון של המאפיין
jsse.enableSNIExtensionהוא:conf_system_jsse.enableSNIExtension
הפעלת SNI במעבד ההודעות
בשלבים הבאים מוסבר איך להפעיל SNI ברכיב Apigee מעבד בקשות.
- במחשב של מעבד ההודעות, פותחים את הקובץ הבא בכלי לעריכה. אם היא לא קיימת, צריך ליצור אותה.
/opt/apigee/customer/application/message-processor.properties
לדוגמה, כדי לפתוח את הקובץ באמצעות
vi, מזינים את הפקודה הבאה:vi /opt/apigee/customer/application/message-processor.properties
-
מוסיפים לקובץ המאפיינים שורה בפורמט הבא:
conf_system_jsse.enableSNIExtension=true
- שומרים את השינויים.
-
מוודאים שקובץ המאפיינים הזה נמצא בבעלות המשתמש
apigee, כמו שמוצג בהמשך:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
מפעילים מחדש את מעבד ההודעות כמו שמוצג בהמשך:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- מוודאים שהגדרות ה-SNI עודכנו ב-Message Processor.
- אם יש לכם יותר ממעבד הודעות אחד, צריך לחזור על השלבים שלמעלה בכל מעבדי ההודעות.
השבתת SNI בין מעבדי הודעות של Edge לבין שרת backend
בדרך כלל לא אמורות להיות בעיות אחרי הפעלת SNI. עם זאת, אם נתקלתם בבעיות בקישוריות בין Edge מעבד בקשות לבין שרת הקצה העורפי אחרי הפעלת SNI, תמיד תוכלו להשבית את SNI באמצעות השלבים הבאים.
אפשר להשבית את SNI על ידי שינוי הערך של המאפיין jsse.enableSNIExtension
בחזרה ל-false ברכיב מעבד בקשות.
השבתת SNI במעבדי ההודעות
בשלבים הבאים מוסבר איך להשבית את SNI במעבדי ההודעות של Apigee.
-
במחשב של מעבד ההודעות, פותחים את הקובץ הבא בכלי לעריכה. אם היא לא קיימת, צריך ליצור אותה.
/opt/apigee/customer/application/message-processor.properties
לדוגמה, כדי לפתוח את הקובץ באמצעות
vi, מזינים את הפקודה הבאה:vi /opt/apigee/customer/application/message-processor.properties
-
אם השורה
conf_system_jsse.enableSNIExtension=trueקיימת בקובץ/opt/apigee/customer/application/message-processor.properties, משנים אותה באופן הבא:conf_system_jsse.enableSNIExtension=false
- שומרים את השינויים.
-
מוודאים שקובץ המאפיינים הזה נמצא בבעלות המשתמש
apigee, כמו שמוצג בהמשך:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
מפעילים מחדש את מעבד ההודעות כמו שמוצג בהמשך:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- מוודאים שהגדרות ה-SNI עודכנו ב-Message Processor.
- אם יש לכם יותר ממעבד הודעות אחד, חוזרים על השלבים שלמעלה בכל מעבדי ההודעות.
אימות הגדרת SNI במעבדי ההודעות
בקטע הזה מוסבר איך לוודא שההגדרה של SNI עודכנה בהצלחה במעבדי ההודעות.
למרות שמשתמשים באסימון conf_system_jsse.enableSNIExtension כדי להגדיר SNI במעבד ההודעות, צריך לוודא שהמאפיין בפועל jsse.enableSNIExtension הוגדר עם הערך החדש.
-
במחשב של מעבד ההודעות, מחפשים את המאפיין
jsse.enableSNIExtensionבספרייה/opt/apigee/edge-message-processor/confובודקים אם הוא הוגדר עם הערך החדש כמו שמוצג בהמשך:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
-
אם התצורה של 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 הופעל או הושבת בהצלחה במעבד ההודעות. -
אם עדיין מוצג הערך הישן של הנכס
jsse.enableSNIExtension, צריך לוודא שביצעתם את כל השלבים שמפורטים בקטע המתאים כדי להפעיל או להשבית את SNI בצורה נכונה. אם פספסתם שלב כלשהו, צריך לחזור על כל השלבים בצורה נכונה. - אם עדיין אין לך אפשרות להפעיל או להשבית את SNI , אפשר ליצור קשר עם התמיכה של Apigee Edge.