किसी API प्रॉक्सी में TLS कनेक्शन जानकारी ऐक्सेस करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

Edge से आपको ऐसे वर्चुअल होस्ट बनाने की सुविधा मिलती है जो एकतरफ़ा और दो-तरफ़ा TLS के साथ काम करते हैं. एकतरफ़ा TLS का इस्तेमाल करके, क्लाइंट Edge राऊटर पर तैनात एक वर्चुअल होस्ट को एक सेशन अनुरोध जारी करता है और राऊटर एक सर्टिफ़िकेट के साथ जवाब देता है जिसमें वर्चुअल होस्ट की सार्वजनिक कुंजी होती है. हस्ताक्षर किए गए सर्टिफ़िकेट के लिए क्लाइंट, सर्टिफ़िकेट की पुष्टि करने के लिए सर्टिफ़िकेट देने वाली संस्था (सीए) से अनुरोध कर सकता है.

टू-वे TLS में, क्लाइंट और Edge, दोनों के पास सर्टिफ़िकेट, जिनकी पुष्टि अनुरोध के हिस्से के तौर पर की जाती है:

  • Edge राऊटर, खुद की पुष्टि करने के लिए अपना सर्टिफ़िकेट TLS क्लाइंट को दिखाता है. इसके बाद, सर्वर को सर्टिफ़िकेट भेजने से पहले, क्लाइंट सर्वर की पहचान की पुष्टि करता है.
  • खुद की पुष्टि करने के लिए, TLS क्लाइंट अपना सर्टिफ़िकेट Edge को दिखाता है.

ज़्यादा जानकारी के लिए, वर्चुअल होस्ट के बारे में जानकारी देखें.

TLS कनेक्शन की जानकारी कैप्चर की जा रही है

TLS के साथ काम करने वाले वर्चुअल होस्ट की मदद से, किसी एपीआई प्रॉक्सी को अनुरोध करने के दौरान, Edge TLS कनेक्शन के बारे में जानकारी कैप्चर कर सकता है. इसके बाद, आपका एपीआई प्रॉक्सी, फ़्लो वैरिएबल के ज़रिए उस जानकारी को ऐक्सेस कर सकता है, ताकि ज़्यादा विश्लेषण और पुष्टि की जा सके.

Edge से कैप्चर की गई TLS की जानकारी का टाइप, इस बात पर निर्भर करता है कि वर्चुअल होस्ट पर एकतरफ़ा TLS की सुविधा है या दो-तरफ़ा TLS. उदाहरण के लिए, एकतरफ़ा TLS के लिए, Edge TLS कनेक्शन में इस्तेमाल किए गए TLS साइफ़र या TLS प्रोटोकॉल के बारे में जानकारी कैप्चर कर सकता है.

दोतरफ़ा TLS के लिए, Edge एकतरफ़ा TLS के लिए कैप्चर की गई सारी जानकारी कैप्चर कर सकता है. साथ ही, क्लाइंट के सर्टिफ़िकेट के बारे में जानकारी भी कैप्चर कर सकता है. उदाहरण के लिए, Edge क्लाइंट सर्टिफ़िकेट का SHA1 फ़िंगरप्रिंट और क्लाइंट सर्टिफ़िकेट को PEM फ़ॉर्मैट में कैप्चर कर सकता है.

एकतरफ़ा और दो-तरफ़ा TLS, दोनों के लिए जानकारी कैप्चर करना

नीचे दी गई टेबल में उन फ़्लो वैरिएबल की सूची दी गई है जिनमें Edge से कैप्चर की गई TLS कनेक्शन की जानकारी होती है और जिन्हें एपीआई प्रॉक्सी में ऐक्सेस किया जा सकता है. वर्चुअल होस्ट की परिभाषा में, <ConnectionProperties> को 'सही है' पर सेट करके, यह जानकारी एकतरफ़ा और दो-तरफ़ा TLS के लिए कैप्चर की जाती है:

फ़्लो वैरिएबल Description
tls.cipher यह साइफ़र, TLS कनेक्शन के लिए इस्तेमाल किया जाता है.
tls.protocol TLS कनेक्शन में इस्तेमाल किया जाने वाला प्रोटोकॉल.
tls.server.name अनुरोध किया गया SNI सर्वर नाम.
tls.session.id

सेशन आइडेंटिफ़ायर.

यह फ़्लो वैरिएबल तब उपलब्ध होता है, जब <ConnectionProperties> या <ClientProperties> को या 'सही' पर सेट किया जाता है.

दो-तरफ़ा TLS के दौरान अतिरिक्त TLS जानकारी कैप्चर करना

नीचे दी गई टेबल में उन फ़्लो वैरिएबल की सूची दी गई है जिनमें 2-तरफ़ा TLS में Edge से कैप्चर किए गए क्लाइंट सर्टिफ़िकेट की जानकारी शामिल है. वर्चुअल होस्ट की परिभाषा में, <ClientProperties> को 'सही है' पर सेट करके, यह जानकारी दो-तरफ़ा TLS के लिए कैप्चर की जाती है:

फ़्लो वैरिएबल Description
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 कनेक्शन की जानकारी कैप्चर करने की सुविधा चालू करें. डिफ़ॉल्ट वैल्यू 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 एचटीटीपी हेडर का इस्तेमाल करके उस जानकारी को पास करता है. इसलिए, आपको यह पक्का करना होगा कि हेडर के साइज़ की सीमाएं इस हिसाब से सेट की गई हों कि Cloud के लिए Edge का इस्तेमाल किया जा रहा है या Private Cloud के लिए Edge का इस्तेमाल किया जा रहा है:

  • क्लाउड के लिए Edge: Apigee, हेडर के साइज़ को सही तरीके से सेट करता है.
  • Edge for the Private Cloud: यह सुविधा उपलब्ध नहीं है.

किसी एपीआई प्रॉक्सी में फ़्लो वैरिएबल ऐक्सेस करना

अपने एपीआई प्रॉक्सी में से, TLS फ़्लो वैरिएबल को ऐक्सेस किया जा सकता है और उसकी जांच की जा सकती है. उदाहरण के लिए, उन्हें ऐक्सेस करने के लिए AssignMessage नीति का इस्तेमाल किया जा सकता है. साथ ही, उन्हें JavaScript नीति की मदद से JavaScript में ऐक्सेस किया जा सकता है.

फ़्लो वैरिएबल का रेफ़रंस किसी प्रॉक्सी या टारगेट फ़्लो के <Condition> एलिमेंट में या <Step> या <RouteRule> में भी दिया जा सकता है. उदाहरण के लिए, क्लाइंट के SN के आधार पर अलग-अलग टारगेट पर अनुरोध भेजा जा सकता है.

ज़्यादा जानकारी के लिए, देखें: