API BaaS के लिए TLS कॉन्फ़िगर करना

Edge for Private Cloud v4.18.01

TLS (ट्रांसपोर्ट लेयर सिक्योरिटी, जिसका नाम एसएसएल) से पहले था, स्टैंडर्ड सुरक्षा टेक्नोलॉजी है. इसकी मदद से, एपीआई के एनवायरमेंट में सुरक्षित और एन्क्रिप्ट (सुरक्षित) किए गए मैसेज सेवा को पक्का किया जाता है. API BaaS पोर्टल और एपीआई BaaS स्टैक नोड पर TLS को कॉन्फ़िगर किया जा सकता है.

नीचे दी गई इमेज में एक BaaS पोर्टल नोड और तीन API BaaS स्टैक नोड वाले एपीआई BaaS का सामान्य डिप्लॉयमेंट डायग्राम दिखाया गया है.

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

इस डिप्लॉयमेंट में पोर्टल और स्टैक नोड के बीच लोड बैलेंसर शामिल है. इस कॉन्फ़िगरेशन में, पोर्टल लोड बैलेंसर को एचटीटीपी अनुरोध करता है और लोड बैलेंसर, अनुरोधों को किसी एक स्टैक नोड पर फ़ॉरवर्ड करता है. यह किसी प्रोडक्शन सिस्टम के लिए सुझाया गया डिप्लॉयमेंट एनवायरमेंट है.

TLS कॉन्फ़िगरेशन के विकल्प

API BaaS के लिए TLS को कॉन्फ़िगर करते समय, आपके पास कई विकल्प हैं:

  • TLS को पोर्टल और स्टैक नोड के लिए लोड बैलेंसर पर कॉन्फ़िगर करें

    इस कॉन्फ़िगरेशन में, डेवलपर पोर्टल ऐक्सेस करने के लिए एचटीटीपीएस प्रोटोकॉल का इस्तेमाल करते हैं. साथ ही, ब्राउज़र में चल रहा पोर्टल लोड बैलेंसर के ज़रिए स्टैक नोड को अनुरोध करने के लिए एचटीटीपीएस का इस्तेमाल करता है. लोड बैलेंसर, स्टैक नोड को ऐक्सेस करने के लिए एचटीटीपी का इस्तेमाल करता है.
  • पोर्टल, लोड बैलेंसर, और स्टैक नोड पर TLS कॉन्फ़िगर करें

    अतिरिक्त सुरक्षा के लिए, लोड बैलेंसर को कॉन्फ़िगर करें, ताकि स्टैक नोड को ऐक्सेस करने के लिए TLS का इस्तेमाल किया जा सके.
  • पोर्टल पर और एक ही स्टैक नोड पर TLS को कॉन्फ़िगर करें

    टेस्टिंग या डेवलपमेंट एनवायरमेंट जैसे छोटे एनवायरमेंट में, यह हो सकता है कि आपके पास सिर्फ़ एक स्टैक नोड हो. इसका मतलब है कि लोड बैलेंसर को शामिल करने की ज़रूरत नहीं है. इस कॉन्फ़िगरेशन में, पोर्टल और स्टैक नोड, दोनों पर TLS को कॉन्फ़िगर करें.
  • पोर्टल के लिए, लोड बैलेंसर पर TLS को कॉन्फ़िगर करें

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

पक्का करें कि TLS पोर्ट खुला हुआ है

नीचे दी गई प्रक्रियाएं 9000 के डिफ़ॉल्ट पोर्टल पोर्ट और 8080 के स्टैक नोड पर TLS को कॉन्फ़िगर करती हैं. हालांकि, आपके पास इस पोर्ट को बदलने का विकल्प होता है.

आप चाहे किसी भी पोर्ट का इस्तेमाल करें, आपको यह पक्का करना होगा कि पोर्ट पर नोड खुला हो. उदाहरण के लिए, पोर्ट 8443 को खोलने के लिए इस कमांड का इस्तेमाल किया जा सकता है:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

API BaaS Stack पर TLS को कॉन्फ़िगर करना

डिफ़ॉल्ट रूप से, API BaaS Stack के लिए TLS को बंद किया गया है. इसके बाद, स्टैक नोड के आईपी पते या डीएनएस नाम और पोर्ट 8080 का इस्तेमाल करके, BaaS API को एचटीटीपी पर ऐक्सेस किया जा सकता है. उदाहरण के लिए:

http://stack_IP:8080

इसके अलावा, TLS के ऐक्सेस को BaaS API के लिए कॉन्फ़िगर किया जा सकता है, ताकि आप इसे फ़ॉर्म में ऐक्सेस कर सकें:

https://stack_IP:8080

इस उदाहरण में, पोर्ट 8080 का इस्तेमाल करने के लिए TLS का ऐक्सेस कॉन्फ़िगर किया जा रहा है. हालांकि, पोर्ट 8080 की ज़रूरत नहीं है - आपके पास स्टैक को किसी दूसरे पोर्ट का इस्तेमाल करने के लिए कॉन्फ़िगर करने का विकल्प होता है. इसके लिए ज़रूरी है कि आपका फ़ायरवॉल, किसी खास पोर्ट पर ट्रैफ़िक की अनुमति देता हो.

स्टैक किसी एक पोर्ट पर सिर्फ़ एक तरह के अनुरोध (एचटीटीपी या एचटीटीपीएस) के साथ काम कर सकता है. इसलिए, अगर पोर्ट 8080 पर एचटीटीपीएस ऐक्सेस कॉन्फ़िगर किया जाता है, तो पोर्ट 8080 को ऐक्सेस करने के लिए एचटीटीपी का इस्तेमाल नहीं किया जा सकता. अगर आपने स्टैक को एचटीटीपीएस के साथ पोर्ट 8443 का इस्तेमाल करने के लिए कॉन्फ़िगर किया है, तो स्टैक 8080 पोर्ट पर नहीं सुनेगा.

स्टैक पर TLS का ऐक्सेस कॉन्फ़िगर करने के लिए, नीचे दी गई प्रक्रिया का इस्तेमाल करें:

  1. कीस्टोर JKS फ़ाइल जनरेट करें, जिसमें आपका TLS सर्टिफ़िकेशन और निजी कुंजी हो. ज़्यादा जानकारी के लिए, Edge On Premises के लिए TLS/एसएसएल को कॉन्फ़िगर करना देखें.
    ध्यान दें: पक्का करें कि कीस्टोर और कुंजी के लिए पासवर्ड एक ही हो.
  2. कीस्टोर JKS फ़ाइल को स्टैक नोड पर किसी डायरेक्ट्री में कॉपी करें, जैसे कि /opt/apigee/customer/application. यह ज़रूरी है कि डायरेक्ट्री को 'apigee' उपयोगकर्ता ऐक्सेस कर सके.
  3. JKS फ़ाइल का मालिकाना हक, 'apigee' उपयोगकर्ता को दें:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    यहां keystore.jks, आपकी कीस्टोर फ़ाइल का नाम है.
  4. JKS फ़ाइल का पाथ और कीस्टोर और कुंजी पर मौजूद पासवर्ड के साथ-साथ, इन प्रॉपर्टी को सेट करने के लिए, /opt/apigee/customer/application/usergrid.properties फ़ाइल में बदलाव करें. अगर यह फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_SSL.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks




    /opt/apigee/customer/application/keystore.jks

    # इस प्रॉपर्टी का इस्तेमाल, कोई दूसरा पोर्ट तय करने के लिए करें.
    # tomcat-server_port=8080


    चेतावनी: password वैल्यू साफ़ टेक्स्ट में होनी चाहिए. इसलिए, आपको usergrid.properties को बिना अनुमति के ऐक्सेस से सुरक्षित रखना चाहिए.

    कीस्टोर के उपनाम के बारे में बताने के लिए, tomcat-server_keyalias प्रॉपर्टी का इस्तेमाल करें. आप कुंजी बनाते समय, कुंजी का उपनाम सेट करते हैं. उदाहरण के लिए, keytool कमांड के -alias विकल्प का इस्तेमाल करके, इसे सेट किया जा सकता है.

    स्टैक पर काम करने वाले TLS प्रोटोकॉल को सेट करने के लिए, tomcat-server_ssl.protocols का इस्तेमाल करें. Java 8 पर काम करने वाले प्रोटोकॉल की सूची के लिए, http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename देखें.
  5. स्टैक नोड को कॉन्फ़िगर करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid कॉन्फ़िगर
  6. BaaS स्टैक को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid लड़ाई
  7. एचटीटीपीएस का इस्तेमाल करके, पुष्टि करें कि TLS पर स्टैक नोड पर यह cURL कमांड चलाकर काम कर रहा है:
    > curl -k https://localhost:8080/status -v

    अगर TLS को सही तरीके से कॉन्फ़िगर किया गया है, तो आपको स्टेटस की जानकारी वाला एक रिस्पॉन्स दिखेगा.

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

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

TLS पर स्टैक को ऐक्सेस करने के लिए पोर्टल को कॉन्फ़िगर करना

BaaS पोर्टल, BaaS Stack को एपीआई कॉल करके ब्राउज़र फ़ंक्शन में चल रहा है. अगर आपने TLS का इस्तेमाल करने के लिए BaaS स्टैक को कॉन्फ़िगर किया है, तो उन कॉल को एचटीटीपीएस पर करने के लिए, आपको पोर्टल को भी कॉन्फ़िगर करना होगा.

API BaaS इंस्टॉलेशन को आम तौर पर इनमें से किसी एक के लिए कॉन्फ़िगर किया जाता है:

  • पोर्टल और स्टैक नोड के बीच लोड बैलेंसर का इस्तेमाल करें

    एचटीटीपीएस पर स्टैक नोड को अनुरोध करने के लिए, लोड बैलेंसर को कॉन्फ़िगर करें. ज़्यादा जानकारी के लिए, लोड बैलेंसर से जुड़े दस्तावेज़ देखें.

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

    नीचे बताए गए तरीके से, एचटीटीपीएस पर स्टैक को ऐक्सेस करने के लिए पोर्टल को कॉन्फ़िगर करें.

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

  1. ऊपर बताए गए तरीके से BaaS स्टैक पर या लोड बैलेंसर के लिए बताए गए दस्तावेज़ के मुताबिक, स्टैक नोड के लिए लोड बैलेंसर पर TLS ऐक्सेस कॉन्फ़िगर करें.
  2. इस प्रॉपर्टी को सेट करने के लिए, /opt/apigee/customer/application/portal.properties में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    baas.DL.config.overrideUrl=https://stackIP:port

    किसी एक नोड इंस्टॉलेशन के लिए, आईपी पते या एपीआई स्टैक नोड के पोर्ट या आईपी पते की वैल्यू के तौर पर बताएं. अगर आपके पास एपीआई BaaS स्टैक नोड के सामने लोड बैलेंसर है, तो लोड बैलेंसर की वैल्यू डालें.
  3. पोर्टल नोड को कॉन्फ़िगर करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas- विवरण-पोर्ट कॉन्फ़िगर
  4. आदेश का उपयोग करके पोर्टल को फिर से शुरू करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas- Portal उपचार
  5. अगर आपने ऊपर दिए गए स्टैक के लिए TLS का ऐक्सेस कॉन्फ़िगर करते समय खुद से हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल किया है, तो हो सकता है कि आपका ब्राउज़र, पोर्टल से स्टैक को ऐक्सेस करने की अनुमति न दे. अगर आपको ब्राउज़र में कोई गड़बड़ी दिखती है कि एचटीटीपीएस को ऐक्सेस करने की अनुमति नहीं है, तो अपने ब्राउज़र में इस यूआरएल के लिए अनुरोध करें. साथ ही, इसे ऐक्सेस करने की अनुमति देने के लिए, सुरक्षा से जुड़ा अपवाद जोड़ें:
    https://stackIP:port/status

    एपीआई स्टैक नोड या लोड बैलेंसर के आईपी पते या डीएनएस नाम और पोर्ट की जानकारी दें.

API BaaS पोर्टल पर TLS को कॉन्फ़िगर करना

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

डिफ़ॉल्ट रूप से, पोर्टल नोड और पोर्ट 9000 के आईपी पते या डीएनएस नाम का इस्तेमाल करके, एचटीटीपी पर पोर्टल को ऐक्सेस किया जा सकता है. उदाहरण के लिए:

http://portal_IP:9000

इसके अलावा, TLS के ऐक्सेस को पोर्टल पर कॉन्फ़िगर किया जा सकता है, ताकि आप उसे फ़ॉर्म में ऐक्सेस कर सकें:

https://portal_IP:9443

इस उदाहरण में, पोर्ट 9443 का इस्तेमाल करने के लिए, TLS का ऐक्सेस कॉन्फ़िगर किया जा रहा है. हालांकि, पोर्ट 9443 की ज़रूरत नहीं है - किसी दूसरे पोर्ट का इस्तेमाल करने के लिए, पोर्टल को कॉन्फ़िगर किया जा सकता है.

पोर्टल में किसी एक पोर्ट पर, सिर्फ़ एक तरह के अनुरोध (एचटीटीपी या एचटीटीपीएस) के साथ काम किया जा सकता है. इसलिए, अगर पोर्ट 9000 पर एचटीटीपीएस ऐक्सेस कॉन्फ़िगर किया जाता है, तो पोर्ट 9000 को ऐक्सेस करने के लिए एचटीटीपी का इस्तेमाल नहीं किया जा सकता. अगर आपने पोर्टल को एचटीटीपीएस के साथ पोर्ट 9443 का इस्तेमाल करने के लिए कॉन्फ़िगर किया है, तो अब पोर्टल पोर्ट 9000 पर काम नहीं करेगा.

पोर्टल के लिए TLS को कॉन्फ़िगर करने के लिए:

  1. PEM फ़ॉर्मैट में कुंजी और सर्टिफ़िकेट फ़ाइल बनाएं.
    ध्यान दें: पक्का करें कि पासकोड या सर्टिफ़िकेट पर कोई पासवर्ड/पासफ़्रेज़ न हो.
  2. पोर्टल नोड पर किसी डायरेक्ट्री में PEM फ़ाइलें कॉपी करें, जैसे कि /opt/apigee/customer/application. यह ज़रूरी है कि डायरेक्ट्री को 'apigee' उपयोगकर्ता ऐक्सेस कर सके.
  3. PEM फ़ाइलों का मालिकाना हक 'apigee' उपयोगकर्ता को दें:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. इन प्रॉपर्टी को सेट करने के लिए, /opt/apigee/customer/application/portal.properties फ़ाइल में बदलाव करें. अगर वह फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    baas.DL.एसएसएल=on
    baas.DL.एसएसएल.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.DL.SSL.key=/opt/apigee/customer/application/defaultcert.pem
    baas.ठीक TLS1TLS.एसएसएल1 का इस्तेमाल करेगा.

    # इस प्रॉपर्टी का इस्तेमाल, कोई दूसरा पोर्ट तय करने के लिए करें.
    # baas.DL.listen=9000


    पोर्टल पर काम करने वाले TLS प्रोटोकॉल को सेट करने के लिए, baas.portal.ssl.protocols का इस्तेमाल करें. इस सुविधा का इस्तेमाल करने वाले प्रोटोकॉल की सूची देखने के लिए, Ngnx से तय किए गए एसएसएल प्रोटोकॉल के नामों की सूची देखें: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. पोर्टल नोड को कॉन्फ़िगर करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas- विवरण-पोर्ट कॉन्फ़िगर
  6. पोर्टल को फिर से शुरू करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas- PortalShorts
  7. यह पक्का करने के लिए कि स्टैक नोड में पोर्टल के लिए सही TLS यूआरएल है, "स्टैक या पोर्टल पर TLS के लिए API BaaS स्टैक नोड कॉन्फ़िगर करें" में नीचे दी गई प्रक्रिया का इस्तेमाल करें.

स्टैक या पोर्टल पर TLS के लिए, API BaaS नोड कॉन्फ़िगर करें

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

  • BaaS एपीआई अनुरोधों के जवाबों में एक यूआरएल शामिल करना.
  • पासवर्ड रीसेट करते समय या दूसरी सूचनाएं भेजते समय, ईमेल के टेंप्लेट में लिंक जोड़ना.
  • उपयोगकर्ताओं को खास पोर्टल के पेजों पर रीडायरेक्ट करना.

अगर आपने स्टैक नोड के सामने लोड बैलेंसर का इस्तेमाल किया है या स्टैक नोड पर TLS को कॉन्फ़िगर किया है, तो /opt/apigee/customer/application/usergrid.properties में इस प्रॉपर्टी को सेट करें:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

http://localhost:8080 को लोड बैलेंसर के यूआरएल से बदलें. अगर लोड बैलेंसर को TLS का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है, तो एचटीटीपीएस प्रोटोकॉल का इस्तेमाल करें. आपको पोर्ट को सिर्फ़ तब शामिल करना होगा, जब किसी नॉन-स्टैंडर्ड पोर्ट का इस्तेमाल किया जा रहा हो. इसका मतलब है एचटीटीपी के लिए पोर्ट 80 और एचटीटीपीएस के लिए पोर्ट 443.

अगर आपने स्टैक नोड के सामने लोड बैलेंसर का इस्तेमाल किया है, तो आपको नीचे दी गई प्रॉपर्टी को /opt/apigee/customer/application/DL.properties में भी सेट करना होगा:

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080 की जगह, स्टैक के लोड बैलेंसर का यूआरएल डाल दें.

अगर पोर्टल नोड के सामने लोड बैलेंसर का इस्तेमाल किया जाता है या स्टैक नोड पर TLS को कॉन्फ़िगर किया जाता है, तो usergrid.properties में इन प्रॉपर्टी को सेट करें:

usergrid-deployment_portal.url=http://localhost:9000

http://localhost:9000 को लोड बैलेंसर के यूआरएल से बदल दें. अगर लोड बैलेंसर को TLS का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है, तो एचटीटीपीएस प्रोटोकॉल का इस्तेमाल करें. आपको पोर्ट को सिर्फ़ तब शामिल करना होगा, जब किसी नॉन-स्टैंडर्ड पोर्ट का इस्तेमाल किया जा रहा हो. इसका मतलब है एचटीटीपी के लिए पोर्ट 80 और एचटीटीपीएस के लिए पोर्ट 443.

usergrid.properties में बदलाव करने के बाद:

  1. स्टैक नोड को कॉन्फ़िगर करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid कॉन्फ़िगर
  2. BaaS स्टैक को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid लड़ाई
  3. अगर आपने portal.properties में बदलाव किया है, तो पोर्टल नोड को कॉन्फ़िगर करें:??
    > /opt/apigee/apigee-service/bin/apigee-service baas- विवरण-पोर्ट कॉन्फ़िगर
  4. BaaS पोर्टल को फिर से शुरू करें:
    > /opt/apigee/apigee-service/bin/apigee-service baas- PortalShorts