גישה לפרטי חיבור TLS דרך שרת proxy של API

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

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

ב-TLS דו-כיווני, אישורי מעבר של הלקוח ושל Edge שמאומתים כחלק מבקשה:

  • נתב Edge מציג את האישור שלו ללקוח TLS כדי לאמת את עצמו. לאחר מכן הלקוח מאמת את זהות השרת לפני שליחת האישור לשרת.
  • לקוח ה-TLS מציג את האישור שלו ל-Edge כדי לאמת את עצמו.

מידע נוסף זמין במאמר מידע על מארחים וירטואליים.

לכידת פרטי חיבור TLS

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

הסוג של פרטי ה-TLS שנקלט על ידי Edge תלוי בתמיכה של המארח הווירטואלי ב-TLS חד-כיווני או דו-כיווני. לדוגמה, עבור TLS חד-כיווני, Edge יכול לתעד מידע על הצפנה של TLS או על פרוטוקול TLS שנעשה בו שימוש בחיבור TLS.

ב-TLS דו-כיווני, Edge יכול לתעד את כל אותו המידע שצולם ב-TLS חד-כיווני, וגם לתעד מידע על האישור של הלקוח. לדוגמה, Edge יכול לתעד את טביעת האצבע SHA1 של אישור הלקוח ואת אישור הלקוח בפורמט PEM.

לכידת מידע ל-TLS (אבטחת שכבת התעבורה) חד-כיוונית ודו-כיוונית

בטבלה הבאה מפורטים משתני הזרימה שמכילים מידע על חיבור TLS שתועד על ידי Edge וזמינים לגישה דרך שרת ה-API של שרת ה-proxy. המידע הזה מתועד גם ל-TLS חד-כיווני וגם ל-TLS דו-כיווני, על ידי הגדרת הערך True עבור <ConnectionProperties> בהגדרת המארח הווירטואלי:

משתנה זרימה תיאור
tls.cipher ההצפנה שבה נעשה שימוש בחיבור ה-TLS.
tls.protocol הפרוטוקול המשמש את חיבור ה-TLS (אבטחת שכבת התעבורה).
tls.server.name שם שרת ה-SNI המבוקש.
tls.session.id

מזהה הסשן.

משתנה הזרימה זמין כשמגדירים <ConnectionProperties> או <ClientProperties> או כ-True.

לכידת מידע נוסף של TLS במהלך TLS דו-כיווני

בטבלה הבאה מפורטים משתני הזרימה שמכילים פרטים של אישור לקוח שנקלטו על ידי Edge ב-TLS דו-כיווני. המידע הזה מתועד עבור TLS דו-כיווני על ידי הגדרת הערך True עבור <ClientProperties> בהגדרת המארח הווירטואלי:

משתנה זרימה תיאור
tls.client.s.dn הנושא הייחודי (DN) של אישור הלקוח.
tls.client.i.dn השם הייחודי (DN) של המנפיק של אישור הלקוח.
tls.client.raw.cert אישור הלקוח בפורמט PEM.
tls.client.cert.serial המספר הסידורי של אישור הלקוח.
tls.client.cert.fingerprint טביעת האצבע מסוג SHA1 של אישור הלקוח.
tls.session.id

מזהה הסשן.

משתנה הזרימה זמין כשמגדירים את הערך <ConnectionProperties> או את הערך <ClientProperties>.

הגדרת מארח וירטואלי ללכידת פרטי TLS

כדי להגדיר למארח הווירטואלי לתעד פרטי TLS, צריך להגדיר את המאפיינים הבאים בקטע <PropagateTLSInformation> לערך true.

  • <ConnectionProperties>: הפעלת תיעוד פרטי החיבור של TLS (אבטחת שכבת התעבורה) ל-TLS חד-כיווני וגם ל-TLS דו-כיווני. ערך ברירת המחדל הוא false.
  • <ClientProperties>: הפעלת תיעוד של מידע נוסף עבור TLS דו-כיווני. ערך ברירת המחדל הוא false.

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

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

אם מעבירים גוף JSON, צריך להגדיר את המאפיינים כך:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

הגדרת מגבלות לגודל הכותרת

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

  • Edge for the Cloud: Apigee מגדירה את הגדלים של הכותרות בהתאם.
  • Edge לענן הפרטי: התכונה לא זמינה.

גישה למשתני הזרימה בשרת proxy ל-API

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

אפשר גם להפנות למשתני הזרימה ברכיב <Condition> של תהליך proxy או של תהליך היעד, או ב-<Step> או <RouteRule>. לדוגמה, אפשר לנתב בקשה ליעדים שונים בהתאם למספר ה-SN של הלקוח.

למידע נוסף: