निजी क्लाउड के लिए एपीआई का TLS ऐक्सेस कॉन्फ़िगर करना

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

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

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

ज़्यादा जानें:

वर्चुअल होस्ट बनाने के लिए आपको क्या करना होगा

वर्चुअल होस्ट बनाने से पहले, आपके पास यह जानकारी होनी चाहिए:

  • वर्चुअल होस्ट का सार्वजनिक तौर पर दिखने वाला डोमेन नेम. उदाहरण के लिए, आपको पता होना चाहिए कि क्या नाम api.myCompany.com, myapi.myCompany.com वगैरह सबको पता है. इस जानकारी का इस्तेमाल वर्चुअल होस्ट बनाते समय किया जाता है. साथ ही, वर्चुअल होस्ट के लिए डीएनएस रिकॉर्ड बनाते समय भी इस जानकारी का इस्तेमाल किया जाता है.
  • एकतरफ़ा TLS के लिए, आपको एक ऐसा कीस्टोर बनाना होगा जिसमें कीस्टोर में ये चीज़ें शामिल हों:
    • TLS सर्टिफ़िकेट - सर्टिफ़िकेट देने वाली संस्था (सीए) से हस्ताक्षर किया गया सर्टिफ़िकेट या सर्टिफ़िकेट की ऐसी चेन जहां आखिरी सर्टिफ़िकेट पर किसी सीए ने हस्ताक्षर किया है.
    • निजी कुंजी - Edge 2048 बिट तक की कुंजी के साइज़ के साथ काम करता है. लंबा पासवर्ड इस्तेमाल करना ज़रूरी नहीं है.
  • दो-तरफ़ा TLS के लिए, आपको एक कीस्टोर की ज़रूरत होगी. साथ ही, क्लाइंट का सर्टिफ़िकेट रखने के लिए एक ट्रस्टस्टोर की ज़रूरत होगी. वैकल्पिक तौर पर, आपको सर्टिफ़िकेट की सीए चेन की भी ज़रूरत होगी. आपको ट्रस्टस्टोर की ज़रूरत होगी, भले ही सर्टिफ़िकेट पर सीए ने हस्ताक्षर किया हो.

कीस्टोर और ट्रस्टस्टोर बनाने के बारे में ज़्यादा जानकारी के लिए, कीस्टोर और Truststores देखें.

TLS के लिए वर्चुअल होस्ट कॉन्फ़िगरेशन

वर्चुअल होस्ट बनाने के लिए, ऐसा एक्सएमएल ऑब्जेक्ट बनाएं जो वर्चुअल होस्ट के बारे में बताता हो. नीचे दिया गया एक्सएमएल ऑब्जेक्ट, एचटीटीपीएस पर एकतरफ़ा TLS कॉन्फ़िगरेशन के लिए वर्चुअल होस्ट तय करने के लिए <SSLInfo> एलिमेंट का इस्तेमाल करता है:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

इस उदाहरण में, एकतरफ़ा TLS चालू करने के लिए, <Enabled> एलिमेंट को 'सही' पर सेट किया गया है. साथ ही, <KeyStore> और <KeyAlias> एलिमेंट, TLS कनेक्शन के लिए इस्तेमाल किए जाने वाले कीस्टोर और कुंजी के बारे में बताते हैं.

दोतरफ़ा TLS चालू करने के लिए, <ClientAuthEnabled> एलिमेंट को true पर सेट करें और <TrustStore> एलिमेंट का इस्तेमाल करके एक ट्रस्टस्टोर तय करें. ट्रस्टस्टोर में क्लाइंट का सर्टिफ़िकेट और विकल्प के तौर पर सर्टिफ़िकेट की सीए चेन होती है.

वर्चुअल होस्ट में कीस्टोर और ट्रस्टस्टोर नाम तय करने का तरीका

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

पहचान फ़ाइल का इस्तेमाल करने पर यह फ़ायदा होता है कि वर्चुअल होस्ट के इस्तेमाल किए जाने वाले कीस्टोर को बदलने के लिए, पहचान फ़ाइल की वैल्यू बदली जा सकती है. ऐसा आम तौर पर तब किया जाता है, जब मौजूदा कीस्टोर में सर्टिफ़िकेट की समयसीमा खत्म होने वाली हो. रेफ़रंस की वैल्यू बदलने के लिए, आपको Edge राऊटर को रीस्टार्ट करने की ज़रूरत नहीं है.

इसके अलावा, वर्चुअल होस्ट में लिटरल कीस्टोर नाम का इस्तेमाल किया जा सकता है. हालांकि, अगर कभी भी कीस्टोर का नाम बदलने के लिए वर्चुअल होस्ट में बदलाव किया जाता है, तो आपको Edge राऊटर को रीस्टार्ट करना होगा.

कीस्टोर और ट्रस्टस्टोर के रेफ़रंस इस्तेमाल करने से जुड़ी पाबंदियां

कीस्टोर और ट्रस्टस्टोर के रेफ़रंस का इस्तेमाल करते समय, आपको इस पाबंदी का ध्यान रखना होगा:

  • वर्चुअल होस्ट में कीस्टोर और ट्रस्टस्टोर रेफ़रंस का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब SNI के साथ काम किया जा रहा हो और Apigee राऊटर पर एसएसएल को बंद कर दिया गया हो.
  • अगर आपके पास Apigee राऊटर के सामने लोड बैलेंसर है और आपने लोड बैलेंसर पर TLS को खत्म कर दिया है, तो वर्चुअल होस्ट में कीस्टोर और ट्रस्टस्टोर रेफ़रंस का इस्तेमाल नहीं किया जा सकता.

कीस्टोर और ट्रस्टस्टोर के रेफ़रंस इस्तेमाल करने के लिए, मौजूदा वर्चुअल होस्ट में बदलाव करना

Apigee का सुझाव है कि वर्चुअल होस्ट, कीस्टोर और ट्रस्टस्टोर के रेफ़रंस का इस्तेमाल करें. रेफ़रंस की मदद से, ऐसे कीस्टोर और ट्रस्टस्टोर को बदला जा सकता है जिसे वर्चुअल होस्ट इस्तेमाल करता है. इसके लिए, Edge राऊटर को रीस्टार्ट करने की ज़रूरत नहीं होती.

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

Edge 4.15.07 और इससे पहले के वर्शन के लिए, TLS साइफ़र और प्रोटोकॉल सेट करना

अगर आप Edge के 4.15.07 और इससे पहले के वर्शन का इस्तेमाल कर रहे हैं, तो आपको <SSLInfo> टैग के <Ciphers> और <Protocols> चाइल्ड टैग का इस्तेमाल करके, वर्चुअल होस्ट की ओर से इस्तेमाल किए जाने वाले TLS प्रोटोकॉल और साइफ़र सेट करने होंगे. इन टैग के बारे में इस टेबल में बताया गया है.

उदाहरण के लिए:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>myTestKeystore</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>false</ClientAuthEnabled>
            <KeyStore>myTestKeystore</KeyStore>
            <KeyAlias>myKeyAlias</KeyAlias>
            <Ciphers>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
            </Ciphers>
            <Protocols>
                <Protocol>TLSv1.2</Protocol>
            </Protocols>
        </SSLInfo>
   </SSLInfo>

<Cipher> टैग, साइफ़र के Java और JSSE नाम का इस्तेमाल करता है. उदाहरण के लिए, Java 8 के लिए http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites देखें.

Edge 4.16.01 से 4.16.09 के लिए TLS साइफ़र और प्रोटोकॉल तय करना

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

डिफ़ॉल्ट प्रोटोकॉल और साइफ़र की जानकारी देने के लिए, टोकन इस्तेमाल करें:

  • डिफ़ॉल्ट प्रोटोकॉल तय करने के लिए, conf_load_balancing_load.balancing.driver.server.ssl.protocols टोकन का इस्तेमाल करें
  • राऊटर के लिए डिफ़ॉल्ट साइफ़र तय करने के लिए, conf_load_balancing_load.balancing.driver.server.ssl.ciphers टोकन का इस्तेमाल करें

conf_load_balancing_load.balancing.driver.server.ssl.protocols टोकन की डिफ़ॉल्ट वैल्यू यह है:

conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2

यह सेटिंग बताती है कि राऊटर, TLS के 1.0, 1.1, और 1.2 वर्शन के साथ काम करता है. टोकन के लिए, वैल्यू की स्पेस डिलिमिटेड सूची बनाएं.

conf_load_balancing_load.balancing.driver.server.ssl.ciphers टोकन की डिफ़ॉल्ट वैल्यू यह है:

conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES

यह सेटिंग बताती है:

  • कुंजी की लंबाई 128 बिट या उससे ज़्यादा होनी चाहिए (HIGH).
  • बिना पुष्टि वाले साइफ़र बाहर रखें (!aNULL)
  • MD5 (!MD5) का इस्तेमाल करके साइफ़र सुइट शामिल न करें
  • DH (पहचान छिपाकर DH, इफ़ेमरल DH, और तय DH शामिल है) और ट्रिपल DES (!DH+3DES) का इस्तेमाल करके, साइफ़र सुइट शामिल न करें
  • आरएसए कुंजी एक्सचेंज और ट्रिपल DES (!RSA+3DES) का इस्तेमाल करके, साइफ़र सुइट बाहर रखें

सिंटैक्स और इस टोकन के ज़रिए मंज़ूर की गई वैल्यू के बारे में जानकारी के लिए, OpenSSL साइफ़र देखें. ध्यान दें कि इस टोकन में, JavaScript के साइफ़र नेम, जैसे कि AES128-SHA256 का इस्तेमाल किया जाता है, न कि Java/JSSE साइफ़र नेम, जैसे कि TLS_RSA_WITH_AES_128_CBC_SHA256.

राऊटर के लिए टोकन सेट करने के लिए:

  1. /opt/apigee/customer/application/router.properties फ़ाइल में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
  2. conf_load_balancing_load.balancing.driver.server.ssl.ciphers टोकन सेट करें. उदाहरण के लिए, सिर्फ़ TLSv1.2 के बारे में बताने और पहले से शेयर की गई कुंजियों का इस्तेमाल करके साइफ़र सुइट बाहर रखने के लिए, !PSK जोड़ें:
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
  3. पक्का करें कि router.properties फ़ाइल का मालिकाना हक apigee के पास हो:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Edge राऊटर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  5. टोकन की वैल्यू जांचें:
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers

Edge 4.17.01 और इसके बाद के वर्शन के लिए, TLS वर्चुअल होस्ट पैरामीटर सेट करना

अगर आप Edge के 4.17.01 और इसके बाद के वर्शन का इस्तेमाल कर रहे हैं, तो आप <VirtualHost> टैग के <Properties> चाइल्ड टैग का इस्तेमाल करके, TLS प्रोटोकॉल और साइफ़र जैसे अलग-अलग वर्चुअल होस्ट के लिए, कुछ TLS प्रॉपर्टी सेट कर सकते हैं. इन टैग के बारे में वर्चुअल होस्ट प्रॉपर्टी के रेफ़रंस में बताया गया है.

उदाहरण के लिए:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">50</Property>
        <Property name="keepalive_timeout">300</Property>
        <Property name="proxy_request_buffering">off</Property>
        <Property name="proxy_buffering">off</Property>
        <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
        <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
    </Properties>
</VirtualHost>

सिंटैक्स और ssl_ciphers टोकन से मंज़ूर की गई वैल्यू के बारे में जानकारी के लिए, OpenSSL साइफ़र देखें. ध्यान दें कि इस टोकन में, JavaScript के साइफ़र नेम, जैसे कि AES128-SHA256 का इस्तेमाल किया जाता है, न कि Java/JSSE साइफ़र नेम, जैसे कि TLS_RSA_WITH_AES_128_CBC_SHA256.

एचटीटीपीएस का इस्तेमाल करने वाला वर्चुअल होस्ट बनाना

यह उदाहरण, रेफ़रंस का इस्तेमाल करके वर्चुअल होस्ट की कीस्टोर के बारे में बताता है. रेफ़रंस का इस्तेमाल करके, राऊटर को रीस्टार्ट किए बिना ही कीस्टोर बदला जा सकता है.

वर्चुअल होस्ट बनाने के लिए, नीचे दी गई प्रक्रिया का इस्तेमाल करें:

  1. Keystores और Truststores तरीके का इस्तेमाल करके, myTestKeystore नाम का कीस्टोर बनाएं और उसे कॉन्फ़िगर करें. पक्का करें कि कीस्टोर, सर्टिफ़िकेट और निजी कुंजी के लिए myKeyAlias के उपनाम का इस्तेमाल करता है.
  2. आपने ऊपर जो कीस्टोर बनाया है उसका keystoreref नाम, रेफ़रंस बनाने के लिए, नीचे दिए गए POST API कॉल का इस्तेमाल करें:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="keystoreref">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>'
      -u email:password
    

    रेफ़रंस की मदद से, कीस्टोर का नाम और रेफ़रंस टाइप के बारे में KeyStore के तौर पर बताया जाता है.

    रेफ़रंस देखने के लिए, नीचे दिए गए जीईटी एपीआई कॉल का इस्तेमाल करें:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. एक वर्चुअल होस्ट बनाएं एपीआई का इस्तेमाल करके, वर्चुअल होस्ट बनाएं. इसमें <ms-IP>, मैनेजमेंट सर्वर नोड का आईपी पता या डोमेन नेम है.

    यह पक्का करें कि आपने कीस्टोर का सही रेफ़रंस और कुंजी का दूसरा नाम डाला है:

    curl -X POST -H "Content-Type:application/xml" \
      http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \
      -d '<VirtualHost  name="newTLSTrustStore2">
        <HostAliases>
          <HostAlias>apiTLS.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
        <OCSPStapling>off</OCSPStapling>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://keystoreref</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u email:password
  4. उस वर्चुअल होस्ट के लिए डीएनएस रिकॉर्ड बनाएं जो होस्ट के उपनाम से मेल खाता हो.
  5. अगर आपके पास कोई मौजूदा एपीआई प्रॉक्सी है, तो वर्चुअल होस्ट को प्रॉक्सीEndpoint के <HTTPConnection> एलिमेंट में जोड़ें. वर्चुअल होस्ट, सभी नई एपीआई प्रॉक्सी में अपने-आप जुड़ जाता है.

    वर्चुअल होस्ट के बारे में जानकारी में जाकर, वर्चुअल होस्ट बनाने के बाद, एपीआई प्रॉक्सी अपडेट करना देखें.

वर्चुअल होस्ट का इस्तेमाल करने के लिए एपीआई प्रॉक्सी को अपडेट करने और होस्ट उपनाम के लिए डीएनएस रिकॉर्ड बनाने के बाद, नीचे बताए गए तरीके से एपीआई प्रॉक्सी को ऐक्सेस किया जा सकता है:

https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}

उदाहरण के लिए:

https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282

कीस्टोर या ट्रस्टस्टोर के लिए रेफ़रंस बनाना और उनमें बदलाव करना

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

उदाहरण के लिए, नीचे एक वर्चुअल होस्ट दिखाया गया है, जो कीस्टोर के रेफ़रंस का इस्तेमाल करता है:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://keystoreref</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

नीचे दिए गए POST API कॉल का इस्तेमाल करके, keystoreref नाम का रेफ़रंस बनाएं:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
  -d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password

रेफ़रंस की मदद से, कीस्टोर का नाम और उसके टाइप के बारे में पता चलता है.

रेफ़रंस देखने के लिए, नीचे दिए गए जीईटी एपीआई कॉल का इस्तेमाल करें:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

बाद में रेफ़रंस को बदलकर किसी दूसरे कीस्टोर पर ले जाने के लिए, यह पक्का करें कि उपनाम का नाम वही है, नीचे दिए गए PUT कॉल का इस्तेमाल करें:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
  -d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password