परिचय
Edge for Private Cloud के अलग-अलग कॉम्पोनेंट, जैसे कि मैसेज प्रोसेसर, मैनेजमेंट सर्वर, और राऊटर डिफ़ॉल्ट रूप से, सादे टेक्स्ट वाले चैनल के ज़रिए Cassandra नोड से कनेक्ट होते हैं. ऐसे चैनलों पर, Cassandra को भेजे जाने वाले और उससे मिलने वाले डेटा को साफ़ तौर पर कम्यूनिकेट किया जाता है. Apigee mTLS, Consul सेवा-मेश पर आधारित एक सुविधा है. यह Private Cloud क्लस्टर के लिए Edge में मौजूद कॉम्पोनेंट के बीच कम्यूनिकेशन को सुरक्षित बनाती है. Apigee की इस सुविधा से, क्लाइंट कॉम्पोनेंट और Cassandra के बीच कम्यूनिकेशन चैनल पर टीएलएस सुरक्षा भी मिलती है.
इस लेख में, Apigee की ओर से उपलब्ध कराई गई नई सुविधा के बारे में बताया गया है. इस सुविधा के तहत, Edge for Private Cloud में क्लाइंट कॉम्पोनेंट और Cassandra के बीच कम्यूनिकेशन को, म्यूचुअल टीएलएस (इसे दो-तरफ़ा टीएलएस भी कहा जाता है) के ज़रिए सुरक्षित किया जाता है. इसके लिए, Cassandra में नेटिव तौर पर उपलब्ध सुविधाओं का इस्तेमाल किया जाता है. इसमें किसी बाहरी सर्विस मेश का इस्तेमाल नहीं किया जाता.
नेटिव mTLS सुविधा
इस लेख में बताए गए Cassandra और क्लाइंट कॉम्पोनेंट के बीच mTLS चालू करने के लिए, Apache Cassandra की ओर से उपलब्ध कराई गई TLS सुविधाओं का इस्तेमाल किया जाता है. इस सुविधा के चालू होने पर, Cassandra से क्लाइंट कनेक्शन (CQL नेटिव ट्रांसपोर्ट पोर्ट 9042 पर) के लिए, कनेक्शन बनाने की अनुमति देने से पहले क्लाइंट के साथ दो-तरफ़ा टीएलएस हैंडशेक किया जाता है. इस दोतरफ़ा टीएलएस कनेक्शन के लिए, Cassandra सर्वर के तौर पर काम करता है. साथ ही, Cassandra से कनेक्ट होने वाले अलग-अलग क्लाइंट (जैसे कि edge-message-processor, cqlsh टूल वगैरह) क्लाइंट के तौर पर काम करते हैं.
दोनों तरफ़ से टीएलएस (या आपसी टीएलएस या एमटीएलएस) के लिए, Cassandra और क्लाइंट, दोनों को अपने कीस्टोर के साथ सेट अप करना होगा. हर Cassandra नोड के कीस्टोर में, उसका अपना कुंजी और सर्टिफ़िकेट होना चाहिए. हर क्लाइंट ऐप्लिकेशन के कीस्टोर में, उस क्लाइंट की कुंजी और सर्टिफ़िकेट होना चाहिए. सर्टिफ़िकेट और उनसे जुड़ी चेन वाले ट्रस्टस्टोर को Cassandra और क्लाइंट, दोनों पर जोड़ा जाना चाहिए. हर Cassandra नोड के ट्रस्टस्टोर में क्लाइंट के सर्टिफ़िकेट होने चाहिए. साथ ही, हर क्लाइंट के ट्रस्टस्टोर में सभी Cassandra नोड के सर्टिफ़िकेट होने चाहिए. Apigee के दोनों तरफ़ से TLS/SSL कनेक्शन की पुष्टि करने के तरीके के बारे में लेख पढ़ें. इसमें, दोनों तरफ़ से TLS हैंडशेक के काम करने के तरीके के बारे में ज़्यादा जानकारी दी गई है.
सर्टिफ़िकेट चेनिंग
आम तौर पर, टू-वे टीएलएस में सर्वर सर्टिफ़िकेट, क्लाइंट सर्टिफ़िकेट, सर्टिफ़िकेट चेन, कीस्टोर, और ट्रस्टस्टोर कई तरीकों से बनाए जा सकते हैं. यह बात Cassandra और क्लाइंट नेटिव mTLS पर भी लागू होती है. Apigee का सुझाव है कि इस सुविधा के लिए कुंजियां और सर्टिफ़िकेट कॉन्फ़िगर करने के लिए, यह सामान्य तरीका अपनाएं. ऐसा इसलिए, क्योंकि संगठन आम तौर पर Edge for Private Cloud क्लस्टर को इसी तरह से चलाते हैं. साथ ही, इस सुविधा के लिए क्लाइंट से कैसेंड्रा कनेक्शन के जितने यूनीक पेयर बनाए जा सकते हैं उन्हें भी ध्यान में रखा जाता है. इसके अलावा, अन्य तरीके भी इस्तेमाल किए जा सकते हैं. हालांकि, यहां बताया गया तरीका सुरक्षा और रखरखाव के लिए सबसे सही है.
रूट सर्टिफ़िकेट और रूट से साइन किया गया इंटरमीडिएट कुंजी/सर्टिफ़िकेट का जोड़ा पाएं. ऐसा हो सकता है कि आपके पास पहले से ही इस तरह की कुंजियां और सर्टिफ़िकेट मौजूद हों. अगर ऐसा नहीं है, तो Appendix 1 में दिए गए निर्देशों का पालन करके, खुद साइन किए गए रूट और इंटरमीडिएट सर्टिफ़िकेट और पासकोड बनाए जा सकते हैं.
- ऊपर दिए गए सामान्य इंटरमीडिएट पासकोड/सर्टिफ़िकेट का इस्तेमाल करके, ऐप्लिकेशन के हिसाब से (लीफ़) सभी पासकोड और सर्टिफ़िकेट पर साइन करें.
एक क्लस्टर में एक जैसी इंटरमीडिएट कुंजी/सर्टिफ़िकेट होने से, हर Cassandra और क्लाइंट नोड पर एक जैसा ट्रस्टस्टोर कॉन्फ़िगर किया जाता है. इसमें एक ही रूट और इंटरमीडिएट सर्टिफ़िकेट चेन होती है. हर Cassandra नोड और क्लाइंट ऐप्लिकेशन को अपनी यूनीक लीफ़ कुंजी और सर्टिफ़िकेट मिलता है. इस पर, सामान्य इंटरमीडिएट कुंजी/सर्टिफ़िकेट से हस्ताक्षर किया जाता है.
- Cassandra नोड या क्लाइंट ऐप्लिकेशन के लीफ़ सर्टिफ़िकेट को रोटेट करना आसान है.
- इंटरमीडिएट या रूट सर्टिफ़िकेट को रोटेट करना अब भी एक काफ़ी मुश्किल प्रोसेस है. हालांकि, ऐसे रोटेशन की फ़्रीक्वेंसी, लीफ़ सर्टिफ़िकेट की फ़्रीक्वेंसी से काफ़ी कम होगी.
अपने संगठन की सुरक्षा से जुड़ी नीतियों के मुताबिक यह तय करें कि अलग-अलग प्राइवेट क्लाउड क्लस्टर में, सामान्य रूट और इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करना है या नहीं. सर्टिफ़िकेट सेटअप करने के अन्य तरीकों के लिए, अपेंडिक्स 2 देखें.
इस लेख में दिए गए बाकी चरणों में, कुंजियां और सर्टिफ़िकेट डिज़ाइन करने के ऊपर दिए गए तरीके के बारे में जानकारी दी गई है.
सीमाएं और सावधानियां
इस सुविधा पर ये सीमाएं लागू होती हैं.
- क्लाइंट कॉम्पोनेंट और Cassandra के बीच नेटिव mTLS की यह सुविधा, apigee-mtls के साथ काम नहीं करती. इस सुविधा का इस्तेमाल करने पर, apigee-mtls का इस्तेमाल नहीं किया जा सकता. इसी तरह, apigee-mtls का इस्तेमाल करने पर, इस सुविधा का इस्तेमाल नहीं किया जा सकता.
- क्लाइंट कॉम्पोनेंट और Cassandra के बीच mTLS चालू करने से, क्लाइंट और Cassandra के बीच कनेक्शन बनाने की परफ़ॉर्मेंस पर कुछ असर पड़ेगा. क्लाइंट को बूट अप करने या कैसेंड्रा कनेक्शन को स्केल करने जैसी कार्रवाइयां धीमी हो सकती हैं. ऐसा इसलिए, क्योंकि कैसेंड्रा और क्लाइंट को कम्यूनिकेशन शुरू करने से पहले, टीएलएस पर बातचीत करनी होती है. इसका असर कम होना चाहिए और आम तौर पर यह दिखना नहीं चाहिए.
- Cassandra में, क्लाइंट से आने वाले कनेक्शन पर mTLS को लागू किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है. लागू करने की सुविधा चालू की जा सकती है. हालांकि, Apigee सॉफ़्टवेयर के अपग्रेड, टीएलएस सुविधाओं को चालू/बंद करने, और कुछ तरह के सर्टिफ़िकेट रोटेशन जैसे ऑपरेशनल टास्क के दौरान इसे बंद करना ज़रूरी है. ज़्यादा जानकारी के लिए, ऑपरेशंस और कॉन्फ़िगरेशन सेक्शन देखें.
- सर्टिफ़िकेट को मैनेज करने और बनाए रखने की ज़िम्मेदारी ग्राहक की होती है.
- सर्टिफ़िकेट रोटेट करने के कई तरीके हैं. ज़्यादा जानकारी के लिए, कृपया सर्टिफ़िकेट रोटेशन सेक्शन देखें
नेटिव एमटीएलएस चालू करना
नेटिव एमटीएलएस को चालू करने के लिए, तीन चरणों वाली प्रक्रिया अपनानी होती है. इसके बारे में यहां बताया गया है:
- रूट सर्टिफ़िकेट और इंटरमीडिएट कुंजी/सर्टिफ़िकेट का जोड़ा पाएं.
- Cassandra के एक नोड के लिए लीफ़ कुंजी/सर्टिफ़िकेट का एक जोड़ा बनाएं, उस पर हस्ताक्षर करें, उसे कीस्टोर में सेव करें, और Cassandra को ज़रूरी नहीं है कि mTLS का इस्तेमाल किया जाए के लिए कॉन्फ़िगर करें. हर Cassandra नोड के लिए, एक बार में एक चरण दोहराएं.
- एक क्लाइंट ऐप्लिकेशन के लिए लीफ़ की/सर्टिफ़िकेट का जोड़ा बनाएं, उस पर हस्ताक्षर करें, उसे कीस्टोर में सेव करें, और क्लाइंट ऐप्लिकेशन को एमटीएलएस के लिए कॉन्फ़िगर करें. हर क्लाइंट ऐप्लिकेशन पर एक-एक करके यह तरीका दोहराएं. क्लाइंट ऐप्लिकेशन:
- edge-management-server
- edge-message-processor
- edge-router
इन चरणों के बारे में यहां बताया गया है:
रूट और इंटरमीडिएट सर्टिफ़िकेट पाना
रूट सर्टिफ़िकेट और रूट से साइन किया गया इंटरमीडिएट कुंजी/सर्टिफ़िकेट का जोड़ा पाएं. अपने संगठन के सीए के हस्ताक्षर वाले रूट और इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करें या खुद के हस्ताक्षर वाले सर्टिफ़िकेट बनाएं. रूट और इंटरमीडिएट सर्टिफ़िकेट चेन को ट्रस्टस्टोर में सेव करें. काम के निर्देशों के लिए, अपेंडिक्स 1 देखें. इसके बाद की कमांड के लिए, यह ज़रूरी है कि आपके पास इन फ़ाइलों का ऐक्सेस हो:
intermediate.key
- लीफ़ सर्टिफ़िकेट पर हस्ताक्षर करने के लिए इंटरमीडिएट सर्टिफ़िकेट की कुंजी फ़ाइलintermediate-cert.pem
- इंटरमीडिएट सर्टिफ़िकेट
Cassandra नोड कॉन्फ़िगर करना
- कोई एक कैसंड्रा नोड चुनें
- लीफ़ कुंजी और सर्टिफ़िकेट का जोड़ा जनरेट करें. साथ ही, उस पर इंटरमीडिएट सर्टिफ़िकेट से हस्ताक्षर करें. कुंजी और हस्ताक्षर किए गए सर्टिफ़िकेट को कीस्टोर में सेव करें. यहां उदाहरण दिया गया है:
# 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
- फ़ाइल
/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
इसके अलावा, FIPS की सुविधा वाले ऑपरेटिंग सिस्टम के लिए,
/opt/apigee/customer/application/cassandra.properties
फ़ाइल में यह प्रॉपर्टी जोड़ें:conf_cassandra_client_encryption_protocol=TLSv1.2
पक्का करें कि फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सकता हो:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- Cassandra नोड को कॉन्फ़िगर करना और रीस्टार्ट करना
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ऊपर दिए गए चरणों को हर Cassandra नोड पर एक-एक करके दोहराएं
क्लाइंट ऐप्लिकेशन कॉन्फ़िगर करना
यह सेक्शन, Cassandra से कनेक्ट होने वाले इन क्लाइंट कॉम्पोनेंट पर लागू होता है:
- edge-management-server
- edge-message-processor
- edge-router
- कोई क्लाइंट कॉम्पोनेंट चुनें
- लीफ़ कुंजी और सर्टिफ़िकेट का जोड़ा जनरेट करें. साथ ही, उस पर इंटरमीडिएट सर्टिफ़िकेट से हस्ताक्षर करें. कुंजी और हस्ताक्षर किए गए सर्टिफ़िकेट को कीस्टोर में सेव करें. यहां उदाहरण दिया गया है:
# 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
- कॉन्फ़िगर किए जा रहे ऐप्लिकेशन के हिसाब से, कॉन्फ़िगरेशन फ़ाइल बनाना और उसमें बदलाव करना
ऐप्लिकेशन कॉन्फ़िगरेशन फ़ाइल मैनेजमेंट सर्वर /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
- क्लाइंट ऐप्लिकेशन को रीस्टार्ट करना
# 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
- क्लाइंट ऐप्लिकेशन में एसएसएल को सही तरीके से कॉन्फ़िगर किया गया है या नहीं, इसकी पुष्टि की जा सकती है. इसके लिए, सही ऐप्लिकेशन के सिस्टम लॉग में, यहां दी गई लाइनों के साथ लॉग देखें:
Cassandra कनेक्शन में एसएसएल के विकल्प जोड़े गए
- ऊपर दिए गए चरणों को हर क्लाइंट ऐप्लिकेशन पर एक-एक करके दोहराएं
ऑपरेशन और कॉन्फ़िगरेशन
mTLS लागू करना
जब Cassandra में mTLS लागू नहीं किया जाता है, तो Cassandra, क्लाइंट से मिले प्लेनटेक्स्ट कनेक्शन या उन क्लाइंट को स्वीकार करता है जिनके साथ वह दो-तरफ़ा टीएलएस हैंडशेक को पूरा कर सकता है. mTLS लागू करने के लिए, Cassandra में mTLS को पहले कॉन्फ़िगर किया जाना चाहिए. Cassandra में एमटीएलएस लागू करने के लिए, यह तरीका अपनाएं:
- कोई एक कैसंड्रा नोड चुनें
- फ़ाइल
/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
- Cassandra नोड को कॉन्फ़िगर करना और रीस्टार्ट करना
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ऊपर दिए गए चरणों को हर Cassandra नोड पर एक-एक करके दोहराएं
Cassandra में mTLS लागू होने के बाद, Cassandra की स्टैंडर्ड क्वेरी टूल cqlsh से सीधे तौर पर कनेक्ट नहीं किया जा सकता. cqlsh को एसएसएल के लिए कॉन्फ़िगर करने के लिए, नई लीफ़ कुंजी और सर्टिफ़िकेट जनरेट करें. यह क्लाइंट ऐप्लिकेशन के लिए लीफ़ कुंजी और सर्टिफ़िकेट की तरह ही होता है. इसके बाद, यह तरीका अपनाएं:
- फ़ाइल बनाना या उसमें बदलाव करना
$HOME/.cassandra/cqlshrc
- फ़ाइल में यह कॉन्टेंट जोड़ें:
[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 के लिए इस्तेमाल किया जाने वाला क्लाइंट सर्टिफ़िकेट. यह एक लीफ़ की/सर्टिफ़िकेट होना चाहिए. इसे इंटरमीडिएट सर्टिफ़िकेट की मदद से जनरेट और साइन किया जा सकता है.
--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 लागू करने की सुविधा बंद करने के लिए, यह तरीका अपनाएं:
- कोई एक कैसंड्रा नोड चुनें
- फ़ाइल
/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
- Cassandra नोड को कॉन्फ़िगर करना और रीस्टार्ट करना
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ऊपर दिए गए चरणों को हर Cassandra नोड पर एक-एक करके दोहराएं
नेटिव mTLS की सुविधा बंद करना
नेटिव एमटीएलएस को बंद करने की प्रोसेस कई चरणों में पूरी होती है. यह प्रोसेस, नेटिव एमटीएलएस चालू करने की प्रोसेस की तरह ही होती है. इसके लिए, यह तरीका अपनाएं:
- अगर Cassandra में mTLS लागू है, तो इसे बंद करें
- इन क्लाइंट ऐप्लिकेशन के सभी नोड में, एक-एक करके एमटीएलएस बंद करें:
- edge-management-server
- edge-message-processor
- edge-router
- कॉन्फ़िगर किए जा रहे ऐप्लिकेशन के हिसाब से, कॉन्फ़िगरेशन फ़ाइल बनाएं और उसमें बदलाव करें:
ऐप्लिकेशन कॉन्फ़िगरेशन फ़ाइल मैनेजमेंट सर्वर /opt/apigee/customer/application/management-server.properties
मैनेजमेंट प्रोसेसर /opt/apigee/customer/application/message-processor.properties
राऊटर /opt/apigee/customer/application/router.properties
- कॉन्फ़िगरेशन फ़ाइल में, यहां दी गई प्रॉपर्टी जोड़ें या उनमें बदलाव करें:
### TLS on CQL connections conf_cassandra_sslconfig.enable.tls=false conf_cassandra_sslconfig.enable.mtls=false
- पक्का करें कि कॉन्फ़िगरेशन फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो और वह उसे पढ़ सके:
chown apigee:apigee configuration file ### Example: chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- क्लाइंट ऐप्लिकेशन को रीस्टार्ट करें:
# 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
- हर क्लाइंट ऐप्लिकेशन पर, एक-एक करके #a से #d तक के चरण दोहराएं.
- सभी Cassandra नोड पर एक-एक करके mTLS बंद करें:
- कोई एक Cassandra नोड चुनें.
- फ़ाइल
/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
- Cassandra नोड को कॉन्फ़िगर करना और रीस्टार्ट करना
- हर Cassandra नोड पर, एक-एक करके #a से #c तक के चरण दोहराएं.
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
सर्टिफ़िकेट रोटेशन
सिर्फ़ लीफ़ सर्टिफ़िकेट के लिए रोटेशन (इंटरमीडिएट और रूट सर्टिफ़िकेट को एक जैसा रखना)क्लाइंट ऐप्लिकेशन कॉन्फ़िगर करें में बताए गए तरीके का इस्तेमाल किया जा सकता है:
- एक ही इंटरमीडिएट कुंजी/सर्टिफ़िकेट का इस्तेमाल करके, किसी ऐप्लिकेशन के लिए नई लीफ़ कुंजी/सर्टिफ़िकेट जनरेट करना
- ऐप्लिकेशन में, नई लीफ़ की/सर्टिफ़िकेट का पाथ कॉन्फ़िगर करें. साथ ही, पासवर्ड और कीस्टोर टाइप भी कॉन्फ़िगर करें
- ऐप्लिकेशन को रीस्टार्ट करें
अगर आपको इंटरमीडिएट या रूट सर्टिफ़िकेट को रोटेट करना है, तो हमारा सुझाव है कि इसे कई चरणों वाली प्रोसेस के तौर पर किया जाए:
- अपने पूरे क्लस्टर में, Cassandra के नेटिव mTLS को बंद करें.
- नए रूट और इंटरमीडिएट सर्टिफ़िकेट का इस्तेमाल करके, नई ब्रांच के सर्टिफ़िकेट या ऐप्लिकेशन सर्टिफ़िकेट जनरेट करें.
- कुंजी और सर्टिफ़िकेट के नए सेट का इस्तेमाल करके, Cassandra के नेटिव mTLS को चालू करने के लिए यह तरीका अपनाएं.
Apigee की सामान्य कार्रवाइयां
Apigee के सामान्य ऑपरेशन करने के लिए, पक्का करें कि Cassandra में mTLS लागू न हो. जैसे, Apigee सॉफ़्टवेयर को अपग्रेड करना, Cassandra नोड जोड़ना या हटाना, डेटा सेंटर जोड़ना या हटाना, Cassandra की पुष्टि करने की सुविधा चालू या बंद करना वगैरह. अगर आपने एमटीएलएस लागू किया है, तो इन कार्रवाइयों को पूरा करने से पहले, एमटीएलएस लागू करने की सुविधा बंद करें.
अपेंडिक्स 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: सर्टिफ़िकेट चेन बनाने के अन्य सेटअप
इस लेख में, सर्टिफ़िकेट चेनिंग के ऐसे सेटअप का सुझाव दिया गया है जो सुरक्षा और संचालन में आसानी के बीच संतुलन बनाए रखता है. हालांकि, इसके विकल्प भी मौजूद हैं. इनके बारे में यहां बताया गया है. ज़्यादातर सामान्य सिद्धांत, अन्य तरीकों पर भी लागू होते हैं. जैसे:
- हर Cassandra नोड या क्लाइंट ऐप्लिकेशन के लिए सीधे तौर पर लीफ़ की और सर्टिफ़िकेट होना (बिना किसी साइनिंग रूट या इंटरमीडिएट सर्टिफ़िकेट के). इससे सर्टिफ़िकेट रोटेशन की प्रोसेस मुश्किल हो जाएगी.
- अलग-अलग कामों के लिए, कई रूट और इंटरमीडिएट सेट होना. उदाहरण के लिए, Cassandra नोड में एक रूट/इंटरमीडिएट सर्टिफ़िकेट सेट होता है. इसका इस्तेमाल करके, Cassandra के सभी लीफ़ सर्टिफ़िकेट पर हस्ताक्षर किए जाते हैं. इसी तरह, सभी क्लाइंट ऐप्लिकेशन के पास, ऐप्लिकेशन के लीफ़ सर्टिफ़िकेट पर हस्ताक्षर करने के लिए एक अलग रूट/इंटरमीडिएट सेट हो सकता है. इस तरह के सेटअप किए जा सकते हैं. हालांकि, इसके लिए रूट/इंटरमीडिएट सर्टिफ़िकेट चेन को सही ट्रस्टस्टोर में जोड़ना होता है. इस उदाहरण में, Cassandra के ट्रस्टस्टोर में क्लाइंट के रूट/इंटरमीडिएट सर्टिफ़िकेट होने चाहिए. साथ ही, क्लाइंट ऐप्लिकेशन के ट्रस्टस्टोर में Cassandra नोड की रूट/इंटरमीडिएट चेन होनी चाहिए.
- ऊपर दिए गए उदाहरण की तरह ही, अलग-अलग क्षेत्रों के लिए, रूट और इंटरमीडिएट सर्टिफ़िकेट के कई सेट हो सकते हैं. हालांकि, सभी क्षेत्रों के सभी क्लाइंट और सभी क्षेत्रों के सभी सर्वर को रूट और इंटरमीडिएट चेन के बारे में पता होना चाहिए. इसके लिए, कॉन्फ़िगर किए गए ट्रस्टस्टोर में उन सभी को जोड़ना होगा.