גישה לפרטי חיבור TLS ב-proxy ל-API

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

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

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

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

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

איסוף פרטי חיבור TLS

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

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

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

תיעוד מידע על TLS חד-כיווני ודו-כיווני

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

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

מזהה הסשן.

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

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

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

משתנה זרימה תיאור
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> כ-true.

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

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

  • <ConnectionProperties>: הפעלת הלכידה של פרטי חיבור 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 for the Cloud או ב-Edge for the Private Cloud:

  • Edge for the Cloud: ‏ Apigee מגדיר את גודלי הכותרות בצורה מתאימה.
  • Edge for the Private Cloud: התכונה לא זמינה.

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

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

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

מידע נוסף זמין במאמרים הבאים: