Cassanda Internode एन्क्रिप्शन चालू करें

इंटरनोड (या नोड-टू-नोड) एन्क्रिप्शन, TLS का इस्तेमाल करके क्लस्टर में नोड के बीच आने-जाने वाले डेटा की सुरक्षा करता है. इस पेज पर, Edge for Private Cloud पर टीएलएस का इस्तेमाल करके, Cassandra इंटरनोड एन्क्रिप्शन को चालू करने का तरीका बताया गया है. ये चरण पूरा करने के लिए, आपको अपनी Cassandra डायग्राम की जानकारी होनी चाहिए.

Cassandra इंटरनोड एन्क्रिप्शन की सुविधा चालू करना

Cassandra इंटरनोड एन्क्रिप्शन को चालू करने के लिए, यह तरीका अपनाएं:

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

    अगर FIPS की सुविधा वाले ऑपरेटिंग सिस्टम पर Edge for Private Cloud का इस्तेमाल किया जा रहा है, तो BouncyCastle FIPS Keystore (BCFKS) का इस्तेमाल करें. BCFKS टाइप के पासकोड के साथ काम करने के बारे में सलाह पाने के लिए, यहां दिया गया अनुबंध देखें.

    इस तरीके का इस्तेमाल करके, यह माना जा सकता है कि आपने keystore.node0 और truststore.node0 के साथ-साथ कीस्टोर और ट्रस्टस्टोर पासवर्ड बनाए हैं. इस बारे में अपेंडिक्स में बताया गया है. अगले चरणों पर जाने से पहले, हर नोड पर शुरुआती चरणों के तौर पर पासकोड और ट्रस्टस्टोर बनाया जाना चाहिए.

  2. /opt/apigee/customer/application/cassandra.properties फ़ाइल में ये प्रॉपर्टी जोड़ें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
    conf_cassandra_server_encryption_internode_encryption=all
    conf_cassandra_server_encryption_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0
    conf_cassandra_server_encryption_keystore_password=keypass
    conf_cassandra_server_encryption_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0
    conf_cassandra_server_encryption_truststore_password=trustpass
        
    # Optionally set the following to enable 2-way TLS or mutual TLS
    conf_cassandra_server_encryption_require_client_auth=true
      
    # Set the following in FIPS enabled operating systems
    # With FIPS, older TLS protocols are disabled, so set to TLSv1.2
    conf_cassandra_server_encryption_protocol=TLSv1.2
    # With FIPS, use BCFKS keystores
    conf_cassandra_server_encryption_store_type=BCFKS
      
  3. पक्का करें कि cassandra.properties फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास है:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties
    

हर Cassandra नोड पर, एक-एक करके नीचे दिया गया तरीका अपनाएं, ताकि उपयोगकर्ताओं के लिए कोई डाउनटाइम न हो और बदलाव लागू हो जाएं:

  1. कैसेंड्रा सेवा रोकें:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  2. Cassandra सेवा को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  3. यह पता लगाने के लिए कि TLS एन्क्रिप्शन सेवा शुरू हो गई है या नहीं, इस मैसेज के लिए सिस्टम लॉग देखें:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

सर्टिफ़िकेट रोटेशन की सुविधा का इस्तेमाल करना

सर्टिफ़िकेट घुमाने के लिए, यह तरीका अपनाएं:

  1. जनरेट किए गए हर यूनीक पासकोड जोड़े (अनुबंध देखें) के लिए सर्टिफ़िकेट जोड़ें. ऐसा करें, ताकि पुराने और नए सर्टिफ़िकेट, दोनों एक ही ट्रस्टस्टोर में मौजूद हों:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE
    

    यहां NEW_ALIAS, एंट्री की पहचान करने वाली यूनीक स्ट्रिंग है, CERT जोड़ी जाने वाली सर्टिफ़िकेट फ़ाइल का नाम है, और EXISTING_TRUSTSTORE Cassandra नोड पर मौजूद ट्रस्टस्टोर का नाम है.

  2. क्लस्टर में मौजूद सभी Cassandra नोड में ट्रस्टस्टोर को डिस्ट्रिब्यूट करने के लिए, scp जैसी कॉपी यूटिलिटी का इस्तेमाल करें. इससे, हर नोड में इस्तेमाल किए जा रहे मौजूदा ट्रस्टस्टोर की जगह नया ट्रस्टस्टोर ले लेगा.
  3. नया ट्रस्टस्टोर लोड करने के लिए, क्लस्टर को रोलिंग रीस्टार्ट करें. साथ ही, नई कुंजियों के लागू होने से पहले उन पर भरोसा बनाएं:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
    
  4. क्लस्टर के हर Cassandra नोड पर, cassandra.properties फ़ाइल में नई पासकोड की वैल्यू के लिए, यहां दी गई प्रॉपर्टी अपडेट करें:
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

    यहां NEW_KEYSTORE_PATH, उस डायरेक्ट्री का पाथ है जहां कीस्टोर फ़ाइल मौजूद है. साथ ही, NEW_KEYSTORE_PASSWORD वह पासवर्ड है जिसे सर्टिफ़िकेट बनाते समय कीस्टोर में सेट किया गया था. इस बारे में अनुबंध में बताया गया है.

  5. Cassandra सेवा को बंद करना:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  6. कैसेंड्रा सेवा को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  7. जब सभी नोड के बीच कम्यूनिकेशन सेट अप हो जाए, तो अगले Cassandra नोड पर जाएं. ध्यान दें: सभी नोड के बीच कम्यूनिकेशन सेट अप होने के बाद ही अगले नोड पर जाएं.

अन्य जानकारी

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

पैरामीटर ब्यौरा
node0 नोड की पहचान करने के लिए कोई भी यूनीक स्ट्रिंग.
keystore.node0 कीस्टोर का नाम. इन कमांड के हिसाब से, यह फ़ाइल मौजूदा डायरेक्ट्री में मौजूद है.
keypass पासकोड, पासकोड और पासकोड, दोनों के लिए एक ही होना चाहिए.
dname node0 के आईपी पते की पहचान 10.128.0.39 के तौर पर करता है.
-validity इस फ़्लैग पर सेट की गई वैल्यू से, जनरेट किया गया कुंजी जोड़ा 10 साल के लिए मान्य हो जाता है.
  1. इस डायरेक्ट्री पर जाएं:
    cd /opt/apigee/data/apigee-cassandra
  2. मौजूदा डायरेक्ट्री में keystore.node0 नाम की फ़ाइल जनरेट करने के लिए, यह कमांड चलाएं:
    keytool -genkey -keyalg RSA -alias node0 -validity 3650 \
    -keystore keystore.node0 -storepass keypass \
    -keypass keypass -dname "CN=10.128.0.39, OU=None, \
    O=None, L=None, C=None"

    अहम जानकारी: पक्का करें कि पासकोड और पासकोस्ट पासवर्ड एक ही हो.

  3. सर्टिफ़िकेट को किसी दूसरी फ़ाइल में एक्सपोर्ट करें:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. पक्का करें कि फ़ाइल को सिर्फ़ apigee उपयोगकर्ता ही पढ़ सके, कोई और नहीं:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. जनरेट किए गए सर्टिफ़िकेट node0.cer को नोड के ट्रस्टस्टोर में इंपोर्ट करें:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    ऊपर दिए गए कमांड में, आपको पासवर्ड सेट करने के लिए कहा गया है. यह ट्रस्टस्टोर पासवर्ड है. यह आपके पहले से सेट किए गए पासवर्ड से अलग हो सकता है. अगर आपसे सर्टिफ़िकेट पर भरोसा करने के लिए कहा जाए, तो yes डालें.

  6. बिना कुंजियों वाले सर्टिफ़िकेट की PEM फ़ाइल जनरेट करने के लिए, openssl का इस्तेमाल करें. ध्यान दें कि cqlsh जनरेट किए गए फ़ॉर्मैट में सर्टिफ़िकेट के साथ काम नहीं करता.
    $ keytool -importkeystore -srckeystore keystore.node0 \
    -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \
    keypass -deststorepass keypass
    $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \
    -passin pass:keypass
    $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
  7. नोड-टू-नोड एन्क्रिप्शन के लिए, हर नोड में node0.cer फ़ाइल को कॉपी करें और उसे हर नोड के ट्रस्टस्टोर में इंपोर्ट करें.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. कीस्टोर और ट्रस्टस्टोर फ़ाइलों में सर्टिफ़िकेट देखने के लिए, keytool -list का इस्तेमाल करें:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0

एफ़आईपीएस की सुविधा वाले ऑपरेटिंग सिस्टम के लिए, BCFKS की-स्टोर के साथ काम करना

एफ़आईपीएस की सुविधा वाले ऑपरेटिंग सिस्टम के साथ काम करते समय, BouncyCastle FIPS Keystores (BCFKS) का इस्तेमाल करें. नीचे दिए गए सेक्शन में, BCFKS टाइप के पासकोड स्टोर के साथ काम करने का तरीका बताया गया है. पासकोड के साथ काम करने के अन्य चरण (जैसे, फ़ाइल का मालिकाना हक, फ़ाइल की जगह वगैरह) वही रहेंगे जो इस परिशिष्ट में बताए गए हैं.

BCFKS टाइप का कीस्टोर जनरेट करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

ध्यान दें: कीस्टोर का पासवर्ड और पासकोड एक ही होना चाहिए.

ध्यान दें: Apigee की ओर से शिप किए गए bc-fips जार का इस्तेमाल किया जा सकता है या BouncyCastle के डेटा स्टोर करने की जगहों से उसी जार को डाउनलोड किया जा सकता है. BCFKS कीस्टोर जनरेट करने के तरीके के बारे में ज़्यादा जानकारी के लिए, BoseCastle के दस्तावेज़ देखें.

सर्टिफ़िकेट को अलग फ़ाइल में एक्सपोर्ट करने के लिए:

keytool -export -v -alias node0 -file node0.cer -keystore keystore.node0 -storepass keypass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

जनरेट किए गए सर्टिफ़िकेट node0.cer को नोड के ट्रस्टस्टोर में इंपोर्ट करें:

keytool -import -v -alias node0 -file node0.cer -keystore truststore.node0 -storepass storepass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS