इंटरनोड (या नोड-टू-नोड) एन्क्रिप्शन, टीएलएस का इस्तेमाल करके क्लस्टर में नोड के बीच ट्रांसफ़र होने वाले डेटा को सुरक्षित रखता है. इस पेज पर, Edge for Private Cloud पर टीएलएस का इस्तेमाल करके, Cassandra इंटरनोड एन्क्रिप्शन को चालू करने का तरीका बताया गया है. इन चरणों को पूरा करने के लिए, आपको Cassandra रिंग की जानकारी होनी चाहिए.
Cassandra इंटरनोड एन्क्रिप्शन की सुविधा चालू करना
Cassandra इंटरनोड एन्क्रिप्शन को चालू करने के लिए, क्लस्टर के सभी नोड पर नीचे दिया गया तरीका अपनाएं. आपको हर नोड के सार्वजनिक सर्टिफ़िकेट को सभी नोड में डिस्ट्रिब्यूट करना होगा.
ऐसा करने के बाद, हर नोड के ट्रस्टस्टोर में सर्टिफ़िकेट node0.cer, node1.cer वगैरह शामिल होंगे. हर नोड के कीस्टोर में, सिर्फ़ उसकी निजी कुंजी होगी. उदाहरण के लिए, node0 के कीस्टोर में सिर्फ़ node0.pem शामिल होगा. आपको हर नोड पर एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू करनी होगी. इसके लिए, एक बार में एक नोड चुनें.
Cassandra इंटरनोड एन्क्रिप्शन को चालू करने के लिए, यह तरीका अपनाएं:
खुद हस्ताक्षर किया हुआ कुंजी और सर्टिफ़िकेट बनाने के लिए, परिशिष्ट में दिया गया तरीका अपनाकर सर्वर सर्टिफ़िकेट जनरेट करें.
यहां दिए गए चरणों को पूरा करने के लिए, यह ज़रूरी है कि आपने
keystore.node0औरtruststore.node0के साथ-साथ, कीस्टोर और ट्रस्टस्टोर के पासवर्ड बनाए हों. इसके बारे में परिशिष्ट में बताया गया है. अगले चरणों को पूरा करने से पहले, हर नोड पर शुरुआती चरणों के तौर पर कीस्टोर और ट्रस्टस्टोर बनाए जाने चाहिए./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
- पक्का करें कि
cassandra.propertiesफ़ाइल का मालिकाना हक, Apigee उपयोगकर्ता के पास हो:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
हर Cassandra नोड पर, एक-एक करके यह तरीका अपनाएं, ताकि उपयोगकर्ताओं के लिए बिना किसी डाउनटाइम के बदलाव लागू हो जाएं:
- Cassandra सेवा बंद करें:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Cassandra सेवा को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- यह पता लगाने के लिए कि टीएलएस एन्क्रिप्शन सेवा शुरू हुई है या नहीं, सिस्टम लॉग में यह मैसेज देखें:
Starting Encrypted Messaging Service on TLS port
सर्टिफ़िकेट रोटेशन की प्रोसेस पूरी करें
सर्टिफ़िकेट रोटेट करने के लिए, यह तरीका अपनाएं:
- जनरेट किए गए हर यूनीक कुंजी के जोड़े के लिए सर्टिफ़िकेट (परिशिष्ट देखें) को किसी मौजूदा Cassandra नोड के ट्रस्टस्टोर में जोड़ें, ताकि पुराने और नए सर्टिफ़िकेट, दोनों एक ही ट्रस्टस्टोर में मौजूद हों:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
जहां
NEW_ALIASएंट्री की पहचान करने वाली यूनीक स्ट्रिंग है,CERTजोड़ी जाने वाली सर्टिफ़िकेट फ़ाइल का नाम है, औरEXISTING_TRUSTSTORECassandra नोड पर मौजूद ट्रस्टस्टोर का नाम है. - क्लस्टर में मौजूद सभी Cassandra नोड में ट्रस्टस्टोर को डिस्ट्रिब्यूट करने के लिए, scp जैसी कॉपी यूटिलिटी का इस्तेमाल करें. इससे हर नोड में इस्तेमाल किए जा रहे मौजूदा ट्रस्टस्टोर को बदला जा सकेगा.
- नए ट्रस्टस्टोर को लोड करने के लिए, क्लस्टर को रोलिंग रीस्टार्ट करें. साथ ही, नई कुंजियों के लागू होने से पहले, उनके लिए भरोसा कायम करें:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- क्लस्टर में मौजूद हर Cassandra नोड पर, cassandra.properties फ़ाइल में मौजूद नई कीस्टोर वैल्यू के लिए, नीचे दिखाई गई प्रॉपर्टी अपडेट करें:
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATHis the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORDis the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Cassandra सेवा को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- सभी नोड के बीच कम्यूनिकेशन सेट अप हो जाने के बाद, अगले Cassandra नोड पर जाएं. ध्यान दें: अगले नोड पर सिर्फ़ तब जाएं, जब सभी नोड के बीच कम्यूनिकेशन सही तरीके से सेट अप हो गया हो.
अपेंडिक्स
यहां दिए गए उदाहरण में, इंटरनोड एन्क्रिप्शन के चरणों को पूरा करने के लिए ज़रूरी सर्वर सर्टिफ़िकेट तैयार करने का तरीका बताया गया है. उदाहरण में दिखाए गए निर्देशों में, इन पैरामीटर का इस्तेमाल किया जाता है:
| पैरामीटर | ब्यौरा |
|---|---|
node0 |
नोड की पहचान करने के लिए कोई भी यूनीक स्ट्रिंग. |
keystore.node0 |
कीस्टोर का नाम. कमांड यह मानकर चलते हैं कि यह फ़ाइल मौजूदा डायरेक्ट्री में है. |
keypass |
कीस्टोर और कुंजी, दोनों के लिए keypass एक ही होना चाहिए. |
dname |
node0 के आईपी पते की पहचान 10.128.0.39 के तौर पर करता है. |
-validity |
इस फ़्लैग पर सेट की गई वैल्यू, जनरेट किए गए कुंजी के जोड़े को 10 साल के लिए मान्य बनाती है. |
- इस डायरेक्ट्री पर जाएं:
cd /opt/apigee/data/apigee-cassandra
- मौजूदा डायरेक्ट्री में
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"
अहम जानकारी: पक्का करें कि कुंजी का पासवर्ड, कीस्टोर के पासवर्ड से मेल खाता हो.
- सर्टिफ़िकेट को किसी अलग फ़ाइल में एक्सपोर्ट करें:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- पक्का करें कि फ़ाइल को सिर्फ़ Apigee उपयोगकर्ता ही पढ़ सके, कोई और नहीं:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- जनरेट किए गए सर्टिफ़िकेट
node0.cerको नोड के ट्रस्टस्टोर में इंपोर्ट करें:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
ऊपर दिए गए निर्देश में, आपसे पासवर्ड सेट करने के लिए कहा जाता है. यह ट्रस्टस्टोर का पासवर्ड है. यह आपके सेट किए गए कीस्टोर पासवर्ड से अलग हो सकता है. अगर आपसे सर्टिफ़िकेट पर भरोसा करने के लिए कहा जाए, तो
yesडालें. - बिना पासकोड वाले सर्टिफ़िकेट की 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
- नोड-टू-नोड एन्क्रिप्शन के लिए,
node0.cerफ़ाइल को हर नोड पर कॉपी करें और उसे हर नोड के ट्रस्टस्टोर में इंपोर्ट करें.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- कीस्टोर और ट्रस्टस्टोर फ़ाइलों में सर्टिफ़िकेट देखने के लिए,
keytool -listका इस्तेमाल करें:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0