Cassandra के नेटिव mTLS को कॉन्फ़िगर करना

परिचय

Edge for Private Cloud के अलग-अलग कॉम्पोनेंट, जैसे कि मैसेज प्रोसेसर, मैनेजमेंट सर्वर, और राऊटर, डिफ़ॉल्ट रूप से Cassandra नोड से प्लेनटेक्स्ट चैनल के ज़रिए कनेक्ट होते हैं. ऐसे चैनलों पर, Cassandra से डेटा भेजने और पाने के लिए, डेटा को साफ़ तौर पर कम्यूनिकेट किया जाता है. Apigee mTLS, Consul सेवा-मेश पर आधारित एक सुविधा है. यह Private Cloud क्लस्टर के लिए Edge में मौजूद कॉम्पोनेंट के बीच कम्यूनिकेशन को सुरक्षित बनाती है. Apigee की यह सुविधा, क्लाइंट कॉम्पोनेंट और Cassandra के बीच कम्यूनिकेशन चैनल पर टीएलएस सुरक्षा भी जोड़ती है.

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

नेटिव एमटीएलएस सुविधा

इस लेख में Cassandra और क्लाइंट कॉम्पोनेंट के बीच mTLS को चालू करने के बारे में बताया गया है. यह Apache Cassandra की ओर से उपलब्ध कराई गई TLS सुविधाओं पर निर्भर करता है. इस नीति के चालू होने पर, Cassandra (सीक्यूएल नेटिव ट्रांसपोर्ट पोर्ट 9042 पर) से क्लाइंट कनेक्शन, कनेक्शन बनाने की अनुमति देने से पहले क्लाइंट के साथ दो-तरफ़ा टीएलएस हैंडशेक करते हैं. इस टू-वे टीएलएस कनेक्शन के लिए, Cassandra सर्वर के तौर पर काम करता है. साथ ही, Cassandra से कनेक्ट होने वाले अलग-अलग क्लाइंट (जैसे, edge-message-processor, cqlsh टूल वगैरह) क्लाइंट के तौर पर काम करते हैं.

दोनों तरफ़ से टीएलएस (या आपसी टीएलएस या एमटीएलएस) के लिए, Cassandra और क्लाइंट, दोनों को अपने कीस्टोर के साथ सेट अप करना होगा. Cassandra के हर नोड के कीस्टोर में, उसकी अपनी कुंजी और सर्टिफ़िकेट होना चाहिए. हर क्लाइंट ऐप्लिकेशन के कीस्टोर में, उस क्लाइंट की कुंजी और सर्टिफ़िकेट होना चाहिए. सर्टिफ़िकेट और उनसे जुड़ी चेन वाले ट्रस्टस्टोर को Cassandra और क्लाइंट, दोनों पर जोड़ा जाना चाहिए. हर Cassandra नोड के ट्रस्टस्टोर में क्लाइंट के सर्टिफ़िकेट होने चाहिए. साथ ही, हर क्लाइंट के ट्रस्टस्टोर में सभी Cassandra नोड के सर्टिफ़िकेट होने चाहिए. आम तौर पर, टू-वे टीएलएस हैंडशेक कैसे काम करता है, इस बारे में ज़्यादा जानने के लिए, Apigee का टू-वे टीएलएस/एसएसएल लेख पढ़ें.

सर्टिफ़िकेट चेनिंग

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

  1. एक रूट सर्टिफ़िकेट और रूट से साइन किया गया इंटरमीडिएट कुंजी/सर्टिफ़िकेट पेयर हासिल करें. ऐसा हो सकता है कि आपके पास पहले से ही ऐसी कुंजियां और सर्टिफ़िकेट हों. अगर ऐसा नहीं है, तो अपेंडिक्स 1 में दिया गया तरीका अपनाकर, खुद हस्ताक्षर किए हुए रूट और इंटरमीडिएट सर्टिफ़िकेट और कुंजियां बनाई जा सकती हैं.

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

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

  1. Cassandra नोड या क्लाइंट ऐप्लिकेशन के लीफ़ सर्टिफ़िकेट को रोटेट करना आसान है.
  2. इंटरमीडिएट या रूट सर्टिफ़िकेट को रोटेट करना अब भी एक काफ़ी मुश्किल प्रोसेस है. हालांकि, इस तरह के रोटेशन की फ़्रीक्वेंसी, लीफ़ सर्टिफ़िकेट की तुलना में काफ़ी कम होगी.

अपने संगठन के सुरक्षा तरीकों का इस्तेमाल करके, यह तय करें कि अलग-अलग निजी क्लाउड क्लस्टर में, कॉमन रूट और इंटरमीडिएट सर्टिफ़िकेट इस्तेमाल करने हैं या नहीं. सर्टिफ़िकेट सेटअप करने के अन्य तरीकों के लिए, अपेंडिक्स 2 देखें.

इस लेख में दिए गए बाकी चरणों में, कुंजियां और सर्टिफ़िकेट डिज़ाइन करने के ऊपर दिए गए तरीके के बारे में जानकारी दी गई है.

सीमाएं और सावधानियां

इस सुविधा पर ये सीमाएं लागू होती हैं.

  • क्लाइंट कॉम्पोनेंट और Cassandra के बीच नेटिव एमटीएलएस की यह सुविधा, apigee-mtls के साथ काम नहीं करती. इस सुविधा का इस्तेमाल करने पर, apigee-mtls का इस्तेमाल नहीं किया जा सकता. इसी तरह, apigee-mtls का इस्तेमाल करने पर, इस सुविधा का इस्तेमाल नहीं किया जा सकता.
  • क्लाइंट कॉम्पोनेंट और Cassandra के बीच mTLS को चालू करने से, क्लाइंट और Cassandra के बीच कनेक्शन बनाने की परफ़ॉर्मेंस पर कुछ असर पड़ेगा. क्लाइंट को बूटअप करने या Cassandra कनेक्शन को स्केल करने जैसे काम धीमे हो सकते हैं. ऐसा इसलिए, क्योंकि Cassandra और क्लाइंट को बातचीत शुरू करने से पहले, टीएलएस को लेकर सहमति बनानी होगी. इसका असर मामूली होना चाहिए और आम तौर पर ध्यान देने लायक नहीं होना चाहिए.
  • Cassandra पर, इनबाउंड क्लाइंट कनेक्शन के लिए mTLS को लागू किया जा सकता है. नीति उल्लंघन ठीक करने का तरीका चालू किया जा सकता है. हालांकि, इसे ऑपरेशनल टास्क के दौरान बंद करना ज़रूरी है. जैसे, Apigee सॉफ़्टवेयर को अपग्रेड करना, टीएलएस की सुविधाओं को चालू/बंद करना, और कुछ खास तरह के सर्टिफ़िकेट रोटेशन. ज़्यादा जानकारी के लिए, ऑपरेशंस और कॉन्फ़िगरेशन सेक्शन देखें.
  • सर्टिफ़िकेट को मैनेज और मेंटेन करने की ज़िम्मेदारी ग्राहक की होती है.
  • सर्टिफ़िकेट रोटेट करने के कई तरीके हैं. ज़्यादा जानकारी के लिए, कृपया सर्टिफ़िकेट रोटेशन सेक्शन देखें

नेटिव एमटीएलएस चालू करना

नेटिव एमटीएलएस को चालू करने के लिए, यहां दिए गए तीन चरणों को पूरा करना होता है:

  1. एक रूट सर्टिफ़िकेट और एक इंटरमीडिएट कुंजी/सर्टिफ़िकेट का जोड़ा हासिल करें.
  2. Cassandra के एक नोड के लिए लीफ़ कुंजी/सर्टिफ़िकेट का एक जोड़ा बनाएं, उस पर हस्ताक्षर करें, उसे कीस्टोर में सेव करें, और Cassandra को वैकल्पिक एमटीएलएस के लिए कॉन्फ़िगर करें. हर Cassandra नोड के लिए, एक बार में एक चरण दोहराएं.
  3. एक क्लाइंट ऐप्लिकेशन के लिए, लीफ़ पासकोड/सर्टिफ़िकेट का जोड़ा बनाएं, उस पर हस्ताक्षर करें, और उसे कीस्टोर में सेव करें. इसके बाद, क्लाइंट ऐप्लिकेशन को एमटीएलएस के लिए कॉन्फ़िगर करें. हर क्लाइंट ऐप्लिकेशन पर, एक-एक करके यह तरीका दोहराएं. क्लाइंट ऐप्लिकेशन:
    1. edge-management-server
    2. edge-message-processor
    3. edge-router

इन चरणों के बारे में यहां बताया गया है:

रूट और इंटरमीडिएट सर्टिफ़िकेट पाना

रूट सर्टिफ़िकेट और रूट से साइन किया गया इंटरमीडिएट कुंजी/सर्टिफ़िकेट का जोड़ा पाएं. अपने संगठन के सीए के हस्ताक्षर वाले रूट और इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करें या खुद हस्ताक्षर किया हुआ सर्टिफ़िकेट बनाएं. रूट और इंटरमीडिएट सर्टिफ़िकेट चेन को ट्रस्टस्टोर में सेव करें. काम के निर्देशों के लिए, अपेंडिक्स 1 देखें. इसके बाद के कमांड के लिए, यह ज़रूरी है कि आपके पास इन फ़ाइलों का ऐक्सेस हो:

  • intermediate.key - लीफ़ सर्टिफ़िकेट पर हस्ताक्षर करने के लिए, इंटरमीडिएट सर्टिफ़िकेट की कुंजी वाली फ़ाइल
  • intermediate-cert.pem- इंटरमीडिएट सर्टिफ़िकेट

Cassandra नोड कॉन्फ़िगर करना

  1. कोई एक Cassandra नोड चुनें
  2. लीफ़ पासकोड और सर्टिफ़िकेट का जोड़ा जनरेट करें. इसके बाद, इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करके उस पर हस्ताक्षर करें. कुंजी और हस्ताक्षर किए गए सर्टिफ़िकेट को कीस्टोर में सेव करें. यहां उदाहरण देखें:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout cass-node1.key -out cass-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=cassnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in cass-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out cass-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in cass-node1-cert.pem -inkey cass-node1.key -out cass-node1-keystore.pfx -name nativemtls -password pass:keystorepass

    कीस्टोर और ट्रस्टस्टोर फ़ाइलों को नोड पर किसी खास जगह पर रखें. साथ ही, पक्का करें कि Apigee उपयोगकर्ता उन्हें ऐक्सेस कर सके

    cp cass-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/cass-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. फ़ाइल बनाएं या उसमें बदलाव करें /opt/apigee/customer/application/cassandra.properties. इस फ़ाइल में यह कॉन्टेंट जोड़ें:
    ### Enable Cassandra TLS on CQL connections
    conf_cassandra_client_encryption_enabled=true
    
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    
    ### Keystore details
    conf_cassandra_client_encryption_keystore=/opt/apigee/customer/application/cass-node1-keystore.pfx
    conf_cassandra_client_encryption_keystore_password=keystorepass
    conf_cassandra_server_encryption_store_type=PKCS12
    
    ### Whether to enable 2-way TLS (or mTLS) - true or false
    conf_cassandra_client_encryption_require_client_auth=true
    
    ### When 2-way TLS is enabled, client certificate details need to be provided via a truststore
    conf_cassandra_client_encryption_truststore=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_client_encryption_truststore_password=trustpass
    conf_cassandra_client_encryption_store_type=PKCS12
    

    पक्का करें कि फ़ाइल का मालिकाना हक Apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सके:

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  4. Cassandra नोड को कॉन्फ़िगर और रीस्टार्ट करना
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  5. हर Cassandra नोड पर, ऊपर दिया गया तरीका एक-एक करके दोहराएं

क्लाइंट ऐप्लिकेशन कॉन्फ़िगर करना

यह सेक्शन, Cassandra से कनेक्ट होने वाले इन क्लाइंट कॉम्पोनेंट पर लागू होता है:

  • edge-management-server
  • edge-message-processor
  • एज-राऊटर

  1. कोई एक क्लाइंट कॉम्पोनेंट चुनें
  2. लीफ़ कुंजी और सर्टिफ़िकेट का जोड़ा जनरेट करें. इसके बाद, इंटरमीडिएट सर्टिफ़िकेट से उस पर हस्ताक्षर करें. कुंजी और हस्ताक्षर किए गए सर्टिफ़िकेट को कीस्टोर में सेव करें. यहां उदाहरण देखें:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout mgmt-node1.key -out mgmt-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=mgmtnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in mgmt-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out mgmt-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in mgmt-node1-cert.pem -inkey mgmt-node1.key -out mgmt-node1-keystore.pfx -name nativemtls -password pass:keystorepass
    

    कीस्टोर और ट्रस्टस्टोर फ़ाइलों को नोड पर किसी खास जगह पर रखें. साथ ही, यह पक्का करें कि apigee उपयोगकर्ता के पास उन्हें ऐक्सेस करने की अनुमति हो

    cp mgmt-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/mgmt-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. कॉन्फ़िगर किए जा रहे ऐप्लिकेशन के आधार पर, कॉन्फ़िगरेशन फ़ाइल बनाना और उसमें बदलाव करना
    ऐप्लिकेशन कॉन्फ़िगरेशन फ़ाइल
    मैनेजमेंट सर्वर /opt/apigee/customer/application/management-server.properties
    मैनेजमेंट प्रोसेसर /opt/apigee/customer/application/message-processor.properties
    राऊटर /opt/apigee/customer/application/router.properties

    फ़ाइल में ये कॉन्फ़िगरेशन जोड़ें:

    ### Enable TLS on CQL connections
    conf_cassandra_sslconfig.enable.tls=true
    conf_cassandra_sslconfig.enable.mtls=true
    
    ### Keystore Details
    conf_cassandra_sslconfig.keystore.path=/opt/apigee/customer/application/mgmt-node1-keystore.pfx
    conf_cassandra_sslconfig.keystore.password=keystorepass
    conf_cassandra_sslconfig.keystore.type=PKCS12
    
    ### Truststore Details
    conf_cassandra_sslconfig.truststore.path=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_sslconfig.truststore.password=trustpass
    conf_cassandra_sslconfig.truststore.type=PKCS12
    

    पक्का करें कि कॉन्फ़िगरेशन फ़ाइल का मालिकाना हक Apigee उपयोगकर्ता के पास हो और वह इसे पढ़ सके

    chown apigee:apigee configuration file
    
    ### Example:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    

  4. क्लाइंट ऐप्लिकेशन को रीस्टार्ट करना
    # Configure and restart service:
    apigee-service component configure
    apigee-service component restart
    # Example, to configure and restart message processor application
    apigee-service edge-message-processor configure
    apigee-service edge-message-processor restart
    
  5. क्लाइंट ऐप्लिकेशन में एसएसएल सही तरीके से कॉन्फ़िगर किया गया है या नहीं, इसकी पुष्टि करने के लिए, ऐप्लिकेशन के सिस्टम लॉग में नीचे दी गई लाइनों के साथ लॉग देखें:

    Cassandra कनेक्शन में एसएसएल के विकल्प जोड़े गए

  6. हर क्लाइंट ऐप्लिकेशन पर, ऊपर दिया गया तरीका एक-एक करके दोहराएं

ऑपरेशन और कॉन्फ़िगरेशन

एमटीएलएस को लागू करना

Cassandra में mTLS लागू न होने पर, Cassandra ऐसे क्लाइंट से सादे टेक्स्ट वाले कनेक्शन स्वीकार करता है या ऐसे क्लाइंट से कनेक्शन स्वीकार करता है जिनके साथ वह दो-तरफ़ा टीएलएस हैंडशेक को पूरा कर सकता है. एमटीएलएस को लागू करने के लिए, सबसे पहले Cassandra में एमटीएलएस को कॉन्फ़िगर करना होगा. Cassandra में एमटीएलएस को लागू करने के लिए, यह तरीका अपनाएं:

  1. कोई एक Cassandra नोड चुनें
  2. फ़ाइल बनाएं या उसमें बदलाव करें /opt/apigee/customer/application/cassandra.properties. इस फ़ाइल में, यह प्रॉपर्टी जोड़ें या इसमें बदलाव करें:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=false
    

    पक्का करें कि फ़ाइल का मालिकाना हक Apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सके

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. Cassandra नोड को कॉन्फ़िगर करें और रीस्टार्ट करें
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. हर Cassandra नोड पर, ऊपर दिया गया तरीका एक-एक करके दोहराएं

Cassandra में mTLS लागू होने के बाद, Cassandra की स्टैंडर्ड क्वेरी टूल cqlsh से सीधे कनेक्ट नहीं किया जा सकता. एसएसएल के लिए cqlsh को कॉन्फ़िगर करने के लिए, एक नई लीफ़ कुंजी और सर्टिफ़िकेट जनरेट करें. यह क्लाइंट ऐप्लिकेशन के लिए लीफ़ कुंजी और सर्टिफ़िकेट जैसा ही होता है. इसके बाद, यह तरीका अपनाएं:

  1. $HOME/.cassandra/cqlshrc फ़ाइल बनाएं या उसमें बदलाव करें
  2. फ़ाइल में यह कॉन्टेंट जोड़ें:
    [ssl]
    certfile = /home/admin-user/certs/inter-root.pem
    validate = false
    userkey = /home/admin-user/certs/cqlsh1.key
    usercert = /home/admin-user/certs/cqlsh1-cert.pem
    
    • certfile - सर्टिफ़िकेट फ़ाइल, जिसमें रूट और इंटरमीडिएट सर्टिफ़िकेट चेन शामिल है
    • userkey - क्लाइंट पासकोड, जिसका इस्तेमाल cqlsh करेगा. यह एक लीफ़ कुंजी/सर्टिफ़िकेट का ऐसा जोड़ा होना चाहिए जिसे इंटरमीडिएट सर्टिफ़िकेट की मदद से जनरेट और साइन किया जा सकता है.
    • usercert - cqlsh के लिए इस्तेमाल किया जाने वाला क्लाइंट सर्टिफ़िकेट. यह एक लीफ़ कुंजी/सर्टिफ़िकेट होना चाहिए, जिसे इंटरमीडिएट सर्टिफ़िकेट की मदद से जनरेट और साइन किया जा सकता है.
  3. --ssl आर्ग्युमेंट देते समय, हमेशा की तरह cqlsh कमांड चलाएं. उदाहरण के लिए:
    $  /opt/apigee/apigee-cassandra/bin/cqlsh --ssl X.X.X.X
    Connected to Apigee at X.X.X.X:9042
    [cqlsh 6.0.0 | Cassandra 4.0.13 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    cqlsh>
    

Cassandra पर mTLS लागू करने की सुविधा बंद करना

Cassandra में mTLS को लागू करने की सुविधा बंद करने के लिए, यह तरीका अपनाएं:

  1. कोई एक कैसंड्रा नोड चुनें
  2. /opt/apigee/customer/application/cassandra.properties फ़ाइल बनाएं या उसमें बदलाव करें. इस फ़ाइल में, यह प्रॉपर्टी जोड़ें या इसमें बदलाव करें:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    

    पक्का करें कि फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सकता हो

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. Cassandra नोड को कॉन्फ़िगर और रीस्टार्ट करना
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. ऊपर दिए गए चरणों को एक-एक करके हर Cassandra नोड पर दोहराएं

नेटिव एमटीएलएस को बंद करना

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

  1. Cassandra में mTLS को लागू करने की सुविधा बंद करें (अगर लागू है)
  2. इन क्लाइंट ऐप्लिकेशन के सभी नोड में, एक-एक करके एमटीएलएस को बंद करें:
    • edge-management-server
    • edge-message-processor
    • edge-router
    1. जिस ऐप्लिकेशन को कॉन्फ़िगर किया जा रहा है उसके आधार पर, कॉन्फ़िगरेशन फ़ाइल बनाएं और उसमें बदलाव करें:
      ऐप्लिकेशन कॉन्फ़िगरेशन फ़ाइल
      मैनेजमेंट सर्वर /opt/apigee/customer/application/management-server.properties
      मैनेजमेंट प्रोसेसर /opt/apigee/customer/application/message-processor.properties
      राऊटर /opt/apigee/customer/application/router.properties
    2. कॉन्फ़िगरेशन फ़ाइल में ये प्रॉपर्टी जोड़ें या उनमें बदलाव करें:
      ### TLS on CQL connections
      conf_cassandra_sslconfig.enable.tls=false
      conf_cassandra_sslconfig.enable.mtls=false
      
    3. पक्का करें कि कॉन्फ़िगरेशन फ़ाइल का मालिकाना हक Apigee उपयोगकर्ता के पास हो और वह इसे पढ़ सके:
      chown apigee:apigee configuration file
      
      ### Example:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. क्लाइंट ऐप्लिकेशन को रीस्टार्ट करें:
      
      # Configure and restart service:
      apigee-service component configure
      apigee-service component restart
      
      # Example, to configure and restart message processor application
      apigee-service edge-message-processor configure
      apigee-service edge-message-processor restart
      
    5. हर क्लाइंट ऐप्लिकेशन पर, एक-एक करके #a से #d तक के चरण दोहराएं.
  3. एक-एक करके सभी Cassandra नोड पर mTLS बंद करें:
    1. कोई एक Cassandra नोड चुनें.
    2. /opt/apigee/customer/application/cassandra.properties फ़ाइल बनाएं या उसमें बदलाव करें. इस फ़ाइल में, यह प्रॉपर्टी जोड़ें या इसमें बदलाव करें:
      ### Cassandra TLS on CQL connections
      conf_cassandra_client_encryption_enabled=false
      

      पक्का करें कि फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सकता हो

      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
      
    3. Cassandra नोड को कॉन्फ़िगर और रीस्टार्ट करना
    4. apigee-service apigee-cassandra configure
      apigee-service apigee-cassandra restart
      
    5. हर Cassandra नोड पर, एक-एक करके #a से #c तक के चरणों को दोहराएं.

सर्टिफ़िकेट रोटेशन

सिर्फ़ लीफ़ सर्टिफ़िकेट के लिए रोटेशन (इंटरमीडिएट और रूट सर्टिफ़िकेट को पहले जैसा ही रखना)

क्लाइंट ऐप्लिकेशन कॉन्फ़िगर करें सेक्शन में बताए गए तरीके से मिलती-जुलती प्रोसेस अपनाई जा सकती है:

  1. एक ही इंटरमीडिएट पासकोड/सर्टिफ़िकेट का इस्तेमाल करके, किसी ऐप्लिकेशन के लिए नया लीफ़ पासकोड/सर्टिफ़िकेट जनरेट करना
  2. ऐप्लिकेशन में नई लीफ़ कुंजी/सर्टिफ़िकेट के पाथ को कॉन्फ़िगर करें. साथ ही, पासवर्ड और कीस्टोर टाइप को भी कॉन्फ़िगर करें
  3. ऐप्लिकेशन को रीस्टार्ट करें
रूट या इंटरमीडिएट सर्टिफ़िकेट के लिए रोटेशन

अगर आपको इंटरमीडिएट या रूट सर्टिफ़िकेट को रोटेट करना है, तो हमारा सुझाव है कि इसे कई चरणों वाली प्रोसेस के तौर पर करें:

  1. अपने क्लस्टर में Cassandra नेटिव एमटीएलएस को बंद करें.
  2. नए रूट और इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करके, नए लीफ़ या ऐप्लिकेशन सर्टिफ़िकेट जनरेट करें.
  3. पासकोड और सर्टिफ़िकेट के नए सेट का इस्तेमाल करके, Cassandra नेटिव एमटीएलएस को चालू करने के लिए, यह तरीका अपनाएं.

Apigee के सामान्य ऑपरेशन

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

Appendix 1

इस अपेंडिक्स में दिए गए चरणों का पालन करके, खुद हस्ताक्षर किया हुआ रूट और इंटरमीडिएट कुंजी/सर्टिफ़िकेट पेयर जनरेट किया जा सकता है. साथ ही, इस सर्टिफ़िकेट चेन को ट्रस्टस्टोर में जोड़ा जा सकता है.

खुद हस्ताक्षर किया हुआ रूट और इंटरमीडिएट सर्टिफ़िकेट जनरेट करना

# Create self-signed root key and cert
openssl req -x509 -newkey rsa:2048 -keyout root.key -out root-cert.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=root.yourorg.com/emailAddress=apigeeroot@yourorg.com"

# Create intermediate key and cert (signed by root)
openssl req -newkey rsa:2048 -keyout intermediate.key -out intermediate-req.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=inter.yourorg.com/emailAddress=apigeeinter@yourorg.com"

openssl x509 -req -in intermediate-req.pem -CAkey root.key -CA root-cert.pem -days 3650 -CAcreateserial -out intermediate-cert.pem

ट्रस्टस्टोर जनरेट करना

# Merge root and intermediate cert into 1 file
cat intermediate-cert.pem > inter-root.pem
cat root-cert.pem >> inter-root.pem

# Create truststore to be used everywhere
keytool -keystore truststore.pfx -storetype PKCS12 -importcert -file inter-root.pem -keypass trustpass -storepass trustpass -alias nativemtls -noprompt

अपेंडिक्स 2: सर्टिफ़िकेट चेनिंग के अन्य सेटअप

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

  1. हर Cassandra नोड या क्लाइंट ऐप्लिकेशन के लिए, डायरेक्ट लीफ़ पासकोड और सर्टिफ़िकेट होना (बिना किसी साइनिंग रूट या इंटरमीडिएट सर्टिफ़िकेट के). इससे सर्टिफ़िकेट रोटेशन की प्रोसेस मुश्किल हो जाएगी.
  2. अलग-अलग कामों के लिए, कई रूट और इंटरमीडिएट सेट होना. उदाहरण के लिए, Cassandra नोड में एक रूट/इंटरमीडिएट सर्टिफ़िकेट सेट होता है. इसका इस्तेमाल करके, Cassandra के सभी लीफ़ सर्टिफ़िकेट पर हस्ताक्षर किए जाते हैं. इसी तरह, सभी क्लाइंट ऐप्लिकेशन के पास, ऐप्लिकेशन के लीफ़ सर्टिफ़िकेट पर हस्ताक्षर करने के लिए, रूट/इंटरमीडिएट सर्टिफ़िकेट का एक अलग सेट हो सकता है. इस तरह के सेटअप काम करते हैं, लेकिन इसके लिए रूट/इंटरमीडिएट सर्टिफ़िकेट चेन को सही ट्रस्टस्टोर में जोड़ना ज़रूरी है. इस उदाहरण में, Cassandra के truststore में क्लाइंट के रूट/इंटरमीडिएट सर्टिफ़िकेट होने चाहिए. साथ ही, क्लाइंट ऐप्लिकेशन के truststore में Cassandra नोड की रूट/इंटरमीडिएट चेन होनी चाहिए.
  3. ऊपर बताए गए तरीके की तरह ही, अलग-अलग इलाकों के लिए कई रूट और इंटरमीडिएट सर्टिफ़िकेट सेट हो सकते हैं. हालांकि, सभी इलाकों के सभी क्लाइंट और सभी इलाकों के सभी सर्वर को सभी रूट और इंटरमीडिएट चेन के बारे में जानकारी होनी चाहिए. इसके लिए, कॉन्फ़िगर किए गए ट्रस्टस्टोर में उन सभी को जोड़ना होगा.