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

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

Cassandra इंटरनोड एन्क्रिप्शन चालू करें

कैसेंड्रा इंटरनोड एन्क्रिप्शन चालू करने के लिए, क्लस्टर के सभी नोड पर नीचे दिया गया तरीका अपनाएं. आपको हर नोड के सार्वजनिक सर्टिफ़िकेट को सभी नोड पर डिस्ट्रिब्यूट करना होगा. ऐसा करने के बाद, हर नोड में उसके ट्रस्टस्टोर में node0.cer, node1.cer वगैरह सर्टिफ़िकेट शामिल होंगे. हर नोड के कीस्टोर में सिर्फ़ उसकी अपनी निजी कुंजी होगी. उदाहरण के लिए, node0 के कीस्टोर में सिर्फ़ node0.pem शामिल होगा. आपको हर नोड को एक-एक करके चालू करना होगा.

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

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

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

  2. /opt/apigee/customer/application/cassandra.properties फ़ाइल में ये प्रॉपर्टी जोड़ें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं.
    conf_cassandra_internode_encryption=all
    conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0
    conf_cassandra_keystore_password=keypass
    conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0
    conf_cassandra_truststore_password=trustpass
    # Optionally set the following to enable 2-way TLS or mutual TLS
    # conf_cassandra_require_client_auth=true
  3. पक्का करें कि cassandra.properties फ़ाइल का मालिकाना हक, apigee उपयोगकर्ता के पास हो:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

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

  1. Cassandra सेवा बंद करें:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Cassandra सेवा को फिर से शुरू करें:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. यह पता करने के लिए कि TLS एन्क्रिप्शन सेवा चालू है या नहीं, नीचे दिए गए मैसेज के लिए सिस्टम लॉग देखें:
    Starting Encrypted Messaging Service on TLS port

सर्टिफ़िकेट का रोटेशन पूरा करें

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

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

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

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

    where NEW_KEYSTORE_PATH is the path to the directory where the keystore file is located and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

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

अन्य जानकारी

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

पैरामीटर ब्यौरा
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 फ़ाइल जनरेट करने के लिए, Openएसएसएल का इस्तेमाल करें. ध्यान दें कि 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