Edge के साथ SNI का इस्तेमाल करना

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

सर्वर नेम इंडिकेशन (एसएनआई) की मदद से, एक ही आईपी पते और पोर्ट से कई एचटीटीपीएस टारगेट दिखाए जा सकते हैं. इसके लिए, उन टारगेट को एक ही टीएलएस सर्टिफ़िकेट का इस्तेमाल करने की ज़रूरत नहीं होती. जब किसी क्लाइंट पर एसएनआई चालू होता है, तो क्लाइंट, टारगेट एंडपॉइंट के होस्टनेम को शुरुआती टीएलएस हैंडशेक के हिस्से के तौर पर पास करता है. इससे टीएलएस सर्वर को यह तय करने में मदद मिलती है कि अनुरोध की पुष्टि करने के लिए, किस टीएलएस सर्टिफ़िकेट का इस्तेमाल किया जाना चाहिए.

उदाहरण के लिए, अगर अनुरोध का टारगेट https://example.com/request/path है, तो टीएलएस क्लाइंट, टीएलएस हैंडशेक अनुरोध में server_name एक्सटेंशन जोड़ता है. जैसा कि यहां दिखाया गया है:

Edge, SNI के साथ इन पर काम करता है:

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

एसएनआई के बारे में ज़्यादा जानकारी के लिए, यहां जाएं:

Edge पर एपीआई प्रॉक्सी के अनुरोध के लिए SNI की सुविधा

एपीआई प्रॉक्सी के अनुरोधों के लिए SNI की सुविधा को होस्ट के एलियास और वर्चुअल होस्ट कंट्रोल करते हैं.

वर्चुअल होस्ट और होस्ट के उपनामों के बारे में जानकारी

Edge में, वर्चुअल होस्ट से आईपी पते और पोर्ट या डीएनएस नाम और पोर्ट के बारे में पता चलता है. इस पर एपीआई प्रॉक्सी को ऐक्सेस किया जाता है. साथ ही, इससे उस यूआरएल के बारे में भी पता चलता है जिसका इस्तेमाल ऐप्लिकेशन, एपीआई प्रॉक्सी को ऐक्सेस करने के लिए करते हैं. आईपी पता/डीएनएस का नाम, एज राऊटर से मेल खाता है. साथ ही, पोर्ट नंबर, राऊटर पर खुला पोर्ट है.

वर्चुअल होस्ट बनाते समय, वर्चुअल होस्ट का होस्ट एलियास भी तय किया जाता है. आम तौर पर, यह वर्चुअल होस्ट का डीएनएस नाम होता है. अनुरोध को हैंडल करने वाली एपीआई प्रॉक्सी का पता लगाने के लिए, राउटर, आने वाले अनुरोध के Host हेडर की तुलना, सभी वर्चुअल होस्ट के लिए तय किए गए उपलब्ध होस्ट के उपनामों की सूची से करता है.

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

वर्चुअल होस्ट यह भी तय करता है कि एपीआई प्रॉक्सी को एचटीटीपी प्रोटोकॉल का इस्तेमाल करके ऐक्सेस किया जाता है या टीएलएस का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किए गए एचटीटीपीएस प्रोटोकॉल का इस्तेमाल करके ऐक्सेस किया जाता है. एचटीटीपीएस का इस्तेमाल करने के लिए वर्चुअल होस्ट को कॉन्फ़िगर करते समय, वर्चुअल होस्ट को ऐसे कीस्टोर से जोड़ें जिसमें टीएलएस हैंडशेकिंग के दौरान वर्चुअल होस्ट इस्तेमाल किए जाने वाले सर्टिफ़िकेट और निजी कुंजी शामिल हों.

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

एसएनआई, होस्ट के उपनामों के साथ कैसे काम करता है

एसएनआई की मदद से, एक ही पोर्ट पर कई वर्चुअल होस्ट तय किए जा सकते हैं. हर वर्चुअल होस्ट के लिए, अलग-अलग टीएलएस सर्टिफ़िकेट और कुंजियां होती हैं. इसके बाद, Edge यह तय करता है कि वर्चुअल होस्ट कौनसा है और TLS के लिए इस्तेमाल किया गया सर्टिफ़िकेट/कुंजी का जोड़ा कौनसा है. यह फ़ैसला, TLS हैंडशेक के अनुरोध में मौजूद server_name एक्सटेंशन के आधार पर लिया जाता है.

Edge Router, टीएलएस हैंडशेक के अनुरोध में server_name एक्सटेंशन को पढ़ता है. इसके बाद, इसका इस्तेमाल सभी वर्चुअल होस्ट से होस्ट के उपनाम खोजने के लिए करता है. अगर राउटर को होस्ट के किसी एलियास से मैच होने का पता चलता है, तो राउटर, होस्ट के एलियास से जुड़े वर्चुअल होस्ट से टीएलएस सर्टिफ़िकेट और कुंजी का इस्तेमाल करता है. अगर कोई मैच नहीं मिलता है, तो टीएलएस हैंडशेकिंग नहीं हो पाती.

टीएलएस हैंडशेक के फ़ेल होने के बजाय, डिफ़ॉल्ट सर्टिफ़िकेट/कुंजी का जोड़ा तय किया जा सकता है. इसके बारे में अगले सेक्शन में बताया गया है.

Edge for the Cloud में डिफ़ॉल्ट सर्टिफ़िकेट/कुंजी का जोड़ा तय करना

Apigee, एचटीटीपीएस के साथ काम करने के लिए टीएलएस सर्टिफ़िकेट और निजी पासकोड उपलब्ध कराता है. कई ग्राहक, डिप्लॉयमेंट के समय अपने सर्टिफ़िकेट और निजी कुंजी का इस्तेमाल करना पसंद करते हैं. हालांकि, Apigee के सर्टिफ़िकेट और कुंजी का इस्तेमाल करके भी अपने एपीआई डिप्लॉय किए जा सकते हैं.

Edge for the Cloud में, अगर राउटर, एसएनआई हेडर को होस्ट एलियास से मैच नहीं कर पाता है या क्लाइंट एसएनआई के साथ काम नहीं करता है, तो राउटर, Apigee की ओर से दिए गए डिफ़ॉल्ट सर्टिफ़िकेट का इस्तेमाल करता है. यह सर्टिफ़िकेट *.apigee.net है.

Private Cloud के लिए Edge में डिफ़ॉल्ट सर्टिफ़िकेट/कुंजी का जोड़ा तय करना

अगर Private Cloud के लिए Edge में, सभी वर्चुअल होस्ट से मिले server_name एक्सटेंशन और होस्ट के उपनामों के बीच कोई मैच नहीं मिलता है या अनुरोध करने वाला क्लाइंट, एसएनआई के साथ काम नहीं करता है, तो पोर्ट पर डिफ़ॉल्ट वर्चुअल होस्ट से मिले सर्टिफ़िकेट/कुंजी का इस्तेमाल करने के लिए, राउटर को कॉन्फ़िगर किया जा सकता है. डिफ़ॉल्ट वर्चुअल होस्ट को संगठन के नाम, एनवायरमेंट के नाम, और वर्चुअल होस्ट के नाम के कॉम्बिनेशन से तय किया जाता है. यह इस फ़ॉर्म में होता है:

orgName_envName_vhName

राउटर, orgName_envName_vhName के कॉम्बिनेशन से मिले सर्ट/कुंजी का इस्तेमाल करता है. यह सर्ट/कुंजी, वर्णमाला के क्रम में सबसे पहले आती है. उदाहरण के लिए, अनुरोध पोर्ट 443 पर आता है. साथ ही, एनवायरमेंट prod में संगठन example के लिए दो वर्चुअल होस्ट तय किए गए हैं:

  • वर्चुअल होस्ट का नाम = default
  • वर्चुअल होस्ट का नाम = test

इस उदाहरण में, राउटर default नाम के वर्चुअल होस्ट से सर्टिफ़िकेट/कुंजी का इस्तेमाल करता है, क्योंकि example_prod_default, वर्णमाला के क्रम में example_prod_test से पहले आता है.

डिफ़ॉल्ट वर्चुअल होस्ट चालू करने के लिए:

  1. पहले राउटर नोड पर, /opt/apigee/customer/application/router.properties में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
  2. फ़ाइल में यह प्रॉपर्टी जोड़ें, ताकि डिफ़ॉल्ट वर्चुअल होस्ट तय किया जा सके:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. राऊटर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. बचे हुए सभी राऊटर पर यह तरीका दोहराएं.

डिफ़ॉल्ट वर्चुअल होस्ट से सर्टिफ़िकेट/कुंजी का इस्तेमाल करने के बजाय, राऊटर पर डिफ़ॉल्ट सर्टिफ़िकेट/कुंजी को साफ़ तौर पर तय किया जा सकता है. सर्टिफ़िकेट/कुंजी के पेयर के लिए डिफ़ॉल्ट वैल्यू साफ़ तौर पर तय करने के लिए, यह तरीका अपनाएं:

  1. पहले राउटर नोड पर, सर्टिफ़िकेट और निजी पासकोड को राउटर नोड पर मौजूद किसी ऐसी जगह पर कॉपी करें जिसे Apigee उपयोगकर्ता ऐक्सेस कर सके. उदाहरण के लिए, /opt/apigee/customer/application.
  2. फ़ाइलों का मालिकाना हक 'apigee. user:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. /opt/apigee/customer/application/router.properties में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
  4. फ़ाइल में ये प्रॉपर्टी जोड़ें, ताकि डिफ़ॉल्ट सर्टिफ़िकेट/कुंजी के बारे में बताया जा सके:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. सर्टिफ़िकेट और कुंजी की जगह की जानकारी देने के लिए, router.properties में ये प्रॉपर्टी सेट करें:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. राऊटर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. बचे हुए सभी राऊटर पर यह तरीका दोहराएं.

Edge से बैकएंड तक के अनुरोधों के लिए, SNI का इस्तेमाल किया जा सकता है

Edge, Message Processors से SNI का इस्तेमाल करने की सुविधा देता है. इससे Apigee Edge for Cloud और Private Cloud डिप्लॉयमेंट में एंडपॉइंट को टारगेट किया जा सकता है. डिफ़ॉल्ट रूप से, क्लाउड के लिए Edge Message Processors पर SNI चालू होता है. हालांकि, Private Cloud में यह बंद होता है.

Edge for Private Cloud में बैकएंड के लिए SNI का इस्तेमाल करना

Edge for Private Cloud के लिए, Apigee ने SNI को डिफ़ॉल्ट रूप से बंद कर दिया है, ताकि यह मौजूदा टारगेट बैकएंड के साथ काम कर सके. अगर आपका टारगेट बैकएंड, एसएनआई के साथ काम करने के लिए कॉन्फ़िगर किया गया है, तो Edge के अपने वर्शन के लिए इस सुविधा को चालू किया जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं.

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

Edge के वर्शन 4.15.07.0x के लिए, Edge और बैकएंड के बीच SNI चालू करें

एसएनआई चालू करने के लिए, यह तरीका अपनाएं:

  1. पहले मैसेज प्रोसेसर नोड पर, एडिटर में /opt/apigee4/conf/apigee/message-processor/system.properties फ़ाइल खोलें.
  2. system.properties में इस प्रॉपर्टी को true पर सेट करें:
    jsse.enableSNIExtension=true
  3. मैसेज प्रोसेसर को रीस्टार्ट करें:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. बचे हुए सभी मैसेज प्रोसेसर पर यह तरीका दोहराएं.

Edge के वर्शन 4.16.01 और इसके बाद के वर्शन के लिए, Edge और बैकएंड के बीच SNI चालू करें

एसएनआई चालू करने के लिए, यह तरीका अपनाएं:

  1. पहले मैसेज प्रोसेसर नोड पर, /opt/apigee/customer/application/message-processor.properties में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
  2. फ़ाइल में यह प्रॉपर्टी जोड़ें:
    conf_system_jsse.enableSNIExtension=true
  3. मैसेज प्रोसेसर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. बचे हुए सभी मैसेज प्रोसेसर पर यह तरीका दोहराएं.