Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Redis Enterprise के लिए SSL/TLS कनेक्शन में महारत: Java डेवलपर गाइड

सर्वर से सुरक्षित कनेक्शन का उपयोग करने वाले सॉफ़्टवेयर का निर्माण एक ऐसा कौशल होना चाहिए जो हर डेवलपर के पास हो। भले ही आप किसी विशिष्ट प्रोडक्शन वातावरण में SSL सक्षम न करना चुनें, आपको हर उस सर्वर से कनेक्शन सुरक्षित करना आना चाहिए जिसके साथ आप काम करते हैं। यह पोस्ट हमारे Java प्रशंसकों के लिए Python में Redis Enterprise Cloud के लिए सुरक्षित कनेक्शन सक्षम करने पर अनुवर्ती है।

यह पोस्ट Redis Enterprise Cloud और SSL का उपयोग करके Java क्लाइंट प्रोग्राम के बीच एन्क्रिप्टेड कनेक्शन को चालू करने, परीक्षण करने और कॉन्फ़िगर करने की एक आसान प्रक्रिया के माध्यम से चलता है। Java प्रोग्राम के लिए SSL सक्षम करने के भ्रमित करने वाले भागों में से एक प्रमाणपत्रों और कुंजियों को एक ऐसे प्रारूप में परिवर्तित करना है जिसे Java समझता है। यह एक Java-केवल प्रक्रिया है जिसे हमें हमारी प्रक्रिया के परीक्षण और कॉन्फ़िगरेशन चरणों के बीच डालना होगा।

टूलसेट

ये टूल लें, ताकि आप Redis पर SSL सक्षम करने के लिए उस टिकट को बंद कर सकें:

  • Redis Enterprise Cloud अकाउंट
  • OpenSSL
  • Java SE JDK
  • Jedis

आपको Bash शेल इंस्टॉल करने की भी आवश्यकता होगी ताकि आप हमारे द्वारा प्रदान की गई एक छोटी स्क्रिप्ट चला सकें। यदि आपका ऑपरेटिंग सिस्टम मानक इंस्टॉल के हिस्से के रूप में Bash शामिल नहीं करता है, तो आपको इसे इंस्टॉल करना होगा या हमारी स्क्रिप्ट को अपने पसंदीदा शेल में अनुवाद करना होगा।

SSL का उपयोग करने के लिए, आपके Redis Enterprise Cloud सब्सक्रिप्शन में SSL सुविधा सक्षम होनी चाहिए। यदि आपका अकाउंट पहले से SSL के लिए सक्षम नहीं है, तो आपको Redis सहायता टीम से संपर्क करके इसे सक्षम करना होगा। आपको अपने अकाउंट डैशबोर्ड के मुख्य मेनू में सहायता टीम से संपर्क करने का लिंक मिलेगा। SSL सेटअप के लिए दस्तावेज़ Redis Enterprise Cloud ऑपरेशंस और एडमिनिस्ट्रेशन गाइड में पाया जा सकता है।

SSL बनाम TLS

बस एक रिमाइंडर: हमारे Python पोस्ट की तरह, हम "SSL" संक्षिप्त नाम का उपयोग "SSL" या "TLS"-सुरक्षित कनेक्शन दोनों को संदर्भित करने के लिए करने की अनौपचारिक परंपरा का पालन करने जा रहे हैं। भले ही Redis Enterprise Cloud वर्तमान में (जून 2018) कनेक्शन सुरक्षित करने के लिए TLS प्रोटोकॉल के संस्करण 1.2 का उपयोग करता है, दोनों Redis Enterprise Cloud और Jedis "SSL" का उपयोग करते हैं, इसलिए हम इसका पालन करने जा रहे हैं।

चरण एक और दो

पहले दो चरण Python क्लाइंट के लिए SSL सेटअप करने के लिए उपयोग किए गए चरणों के समान हैं। यहां सब कुछ दोहराने के बजाय, हम आपको वापस हमारे Python पोस्ट पर भेज रहे हैं। किसी भी भाषा में SSL के साथ काम करने के लिए उस पोस्ट में बहुत उपयोगी जानकारी है। मेरा सुझाव है कि आप चरण 3 से पहले सब कुछ पढ़ें।

प्रक्रिया चरण 2 के बाद Java के लिए अलग होना शुरू होती है, इसलिए हम यहां चरण 2.5 डालने जा रहे हैं ताकि Redis Enterprise Cloud से डाउनलोड की गई क्रेडेंशियल फाइलों को JavaSE के साथ अच्छी तरह से काम करने वाले प्रारूप में बदल सकें।

चरण 2.5: क्रेडेंशियल्स को बदलना

JavaSE के मानक भाग के रूप में, Oracle विभिन्न सुरक्षा सेवाएं प्रदान करता है, जिसमें Java Cryptography Architecture (JCA) शामिल है। JCA, Java एप्लिकेशन के लिए सुरक्षा सेवाओं को लागू करने वाले प्लग-इन प्रदाताओं द्वारा लागू की जाने वाली API का एक सेट परिभाषित करता है। एप्लिकेशन किसी भी उपलब्ध प्रदाता का उपयोग करने के लिए स्वतंत्र हैं (जो अक्सर मानक API से परे अतिरिक्त सेवाएं प्रदान करते हैं), लेकिन अधिकांश एप्लिकेशन JDK के साथ शिप किए गए डिफ़ॉल्ट प्रदाताओं का उपयोग करते हैं।

डिफ़ॉल्ट प्रदाताओं का उपयोग करने की चुनौती यह है कि वे PEM प्रारूप का समर्थन नहीं करते हैं जो आमतौर पर Linux SSL लाइब्रेरी के साथ प्रमाणपत्रों और कुंजियों को संग्रहीत करने के लिए उपयोग किया जाता है। JCA में, क्रेडेंशियल सामग्री पासवर्ड-संरक्षित कीस्टोर रिपॉजिटरी में संग्रहीत होती है। Java एप्लिकेशन में, दो रिपॉजिटरी का उपयोग करना आम है: एक को दस्तावेज़ीकरण में कीस्टोर के रूप में संदर्भित किया जाता है और दूसरे को ट्रस्टस्टोर के रूप में संदर्भित किया जाता है। कीस्टोर का उपयोग क्लाइंट सॉफ़्टवेयर के लिए प्रमाणपत्रों और निजी कुंजियों को संग्रहीत करने के लिए किया जाता है और ट्रस्टस्टोर का उपयोग प्रमाणपत्र प्राधिकरणों से विश्वसनीय प्रमाणपत्रों को संग्रहीत करने के लिए किया जाता है। Redis Enterprise Cloud द्वारा PEM प्रारूप का उपयोग किया जाता है, इसलिए हमने OpenSSL और Java Keytool का उपयोग करके एक स्क्रिप्ट बनाई है जो आपकी PEM फाइलों को आपके Java क्लाइंट प्रोग्राम के लिए उपयोग करने योग्य ट्रस्टस्टोर और कीस्टोर में बदलने के लिए आवश्यक सभी कमांड निष्पादित करती है।

निम्न स्क्रिप्ट, transmogrify.sh, उस डायरेक्टरी से चलाई जानी चाहिए जहां आपने अपना redis_credentials.zip अनपैक किया था। स्क्रिप्ट Redis सर्टिफिकेट अथॉरिटी सर्टिफिकेट (redis_ca.pem) का उपयोग करके ट्रस्टस्टोर (redis_truststore.p12) बनाती है और क्लाइंट सर्टिफिकेट (redis_user.crt) और संबंधित निजी कुंजी (redis_user_private.key) का उपयोग करके कीस्टोर (redisclient_keystore.p12) बनाती है। जबकि क्लाइंट कीस्टोर पासवर्ड-संरक्षित है, फिर भी आपको अपने कीस्टोर की सुरक्षा सुनिश्चित करने के लिए कदम उठाने चाहिए। दोनों कीस्टोर और ट्रस्टस्टोर को उस विशेष Redis डेटाबेस इंस्टेंस से जुड़ने वाले हर क्लाइंट को वितरित करना होगा, इसलिए फिर से आप इन फाइलों को अपने क्रेडेंशियल प्रबंधन प्रणाली में एकीकृत करना चाहेंगे।

JDK9 से पहले के Java संस्करण मालिकाना Java KeyStore (JKS) प्रारूप को पसंद करते थे, लेकिन JDK9 से शुरू होकर, Java उद्योग मानक PKCS12 प्रारूप को डिफ़ॉल्ट करता है। यह स्क्रिप्ट PKCS12 प्रारूप स्टोर बनाती है, लेकिन यदि आप स्क्रिप्ट को संशोधित कर सकते हैं, तो स्टोर प्रकार विकल्प और फ़ाइल एक्सटेंशन बदलकर JKS प्रारूप का उपयोग करें।

चरण 3: अपने क्लाइंट कोड में SSL कॉन्फ़िगर करें

अपने Java क्लाइंट में SSL सक्षम करने का अंतिम चरण क्लाइंट कोड को संशोधित करना है ताकि SSL कनेक्शन स्थापित किया जा सके। हमारा नमूना कोड हमारे Redis Enterprise Cloud इंस्टेंस के लिए एक सुरक्षित कनेक्शन स्थापित करेगा, फिर Redis PING कमांड भेजेगा। हमारा संशोधित कोड इस तरह दिखता है:

आप देखेंगे, कोड में कहीं भी हम चरण 2.5 में अपने Java प्रोग्राम के लिए बनाए गए कीस्टोर या ट्रस्टस्टोर का संदर्भ नहीं देते हैं। JCA प्रदाताओं का डिफ़ॉल्ट व्यवहार सर्वर को प्रमाणित करता है; हमें बस अपनी कुंजी और प्रमाणपत्र जानकारी प्रदान करनी होगी। यह JCA प्रदाताओं द्वारा पढ़े गए सिस्टम प्रॉपर्टी के साथ किया जा सकता है। अपनी IDE एप्लिकेशन कॉन्फ़िगरेशन या java कमांड लाइन में निम्नलिखित पैरामीटर जोड़ें:

उन्हें अपने सिस्टम से उपयुक्त स्थानों और पासवर्ड का उपयोग करने के लिए संशोधित करते हुए।

कीस्टोर प्रॉपर्टी:

  • javax.net.ssl.keyStoreType=PKCS12
  • javax.net.ssl.keyStore=/Users/tague/dev/ssl-testj/redisclient_keyStore.p12
  • javax.net.ssl.keyStorePassword=redis

ट्रांसमोग्रिफाई स्क्रिप्ट द्वारा बनाए गए कीस्टोर के लिए प्रकार (उर्फ प्रारूप), स्थान और पासवर्ड निर्दिष्ट करें। इसी तरह, ट्रस्टस्टोर प्रॉपर्टी:

  • javax.net.ssl.trustStoreType=PKCS12
  • javax.net.ssl.trustStore=/Users/tague/dev/ssl-testj/redis_truststore.p12
  • javax.net.ssl.trustStorePassword=redis

ट्रस्टस्टोर के प्रकार, स्थान और पासवर्ड निर्दिष्ट करें। अंतिम प्रॉपर्टी javax.net.debug=ssl:handshake एक वैकल्पिक प्रॉपर्टी है जिसका उपयोग डीबगिंग जानकारी सक्षम करने के लिए किया जाता है।

SSL का उपयोग करने के लिए Jedis को कॉन्फ़िगर करना विशेष रूप से कठिन नहीं है, लेकिन यदि आप PEM क्रेडेंशियल को Java की और ट्रस्टस्टोर में बदलने के लिए आवश्यक चरणों से अपरिचित हैं तो यह पहली बार में कठिन लग सकता है।

उम्मीद है, इस पोस्ट ने हमारे Java प्रशंसकों को Redis Enterprise Cloud के लिए सुरक्षित कनेक्शन सेटअप करने के लिए वही सौम्य परिचय प्रदान किया जो हमने Python डेवलपर्स को दिया था। मैं आपको सुरक्षा के बारे में एक अंतिम रिमाइंडर के साथ छोड़ना चाहता हूं: अधिकांश संगठनों के पास पासवर्ड और निजी कुंजियों के प्रबंधन के लिए विशिष्ट नीतियां और प्रक्रियाएं होती हैं। कृपया अपने ऑपरेशंस और सुरक्षा टीमों से जांच करना सुनिश्चित करें कि आप उनके दिशानिर्देशों का पालन कर रहे हैं।


  1. Redis Enterprise कैसे IT लागत कम करता है जबकि प्रदर्शन को बढ़ाता है Redis Enterprise कैसे IT लागत कम करता है जबकि प्रदर्शन को बढ़ाता है

    Redis एक इन-मेमोरी डेटाबेस है, और Redis Enterprise इसके ऊपर प्रबंधन, स्वचालन, लचीलापन और सुरक्षा क्षमताओं की एक पूरी परत जोड़ता है, जिससे यह एंटरप्राइज़-तैयार बन जाता है। कई लोगों के लिए, इन-मेमोरी महंगा के बराबर है - एक प्रीमियम जिसे आप शीर्ष प्रदर्शन के लिए भुगतान करना चुनते हैं। और एंटरप्राइज़ सॉ

  1. Dynomite से Redis Enterprise Active-Active में निर्बाध माइग्रेशन - चरण-दर-चरण गाइड Dynomite से Redis Enterprise Active-Active में निर्बाध माइग्रेशन - चरण-दर-चरण गाइड

    इस लेख के भाग I में, Dynomite डेटाबेस को Redis Enterprise Active-Active डेटाबेस में क्यों माइग्रेट करें?, हमने Dynomite और Redis Enterprise की आर्किटेक्चर और फीचर्स की तुलना की। हमने दिखाया कि कैसे Redis Enterprise आपको फीचर-रिच, आसानी से प्रबंधनीय तरीके से Redis Enterprise को जियो-डिस्ट्रीब्यूट करन

  1. Dynomite से Redis Enterprise Active-Active में माइग्रेट करना बेहतर प्रदर्शन और विश्वसनीयता क्यों देता है Dynomite से Redis Enterprise Active-Active में माइग्रेट करना बेहतर प्रदर्शन और विश्वसनीयता क्यों देता है

    2009 में इसके निर्माण के बाद से, Redis OSS का एक बहुत जीवंत ओपन सोर्स समुदाय रहा है। इसके आसपास कई टूल्स और यूटिलिटीज विकसित की गई हैं और Dynomite, नॉन-डिस्ट्रीब्यूटेड डेटास्टोर्स के लिए एक पीयर-टू-पीयर जियो-डिस्ट्रीब्यूशन लेयर, उनमें से एक है। Dynomite को Netflix में इंजीनियरों की एक टीम द्वारा वि