2012-10-30 19 views
31

के बीच अंतर मैं जावा क्लाइंट और सर्वर के बीच एक एसएसएल या टीएलएस कनेक्शन स्थापित करने की कोशिश कर रहा हूं, जिसे मैं स्थापित कर रहा हूं।एसएसएल और टीएलएस और जावा में उनके उपयोग

SSLContext बनाने के लिए मैं SSLContext.getInstance("SSL") का उपयोग कर रहा हूं, और यह काम करता है।

मैं जानना चाहता हूं कि पैरामीटर का उद्देश्य SSLContext.getInstance(String protocol) में क्या है।

विशेष रूप से, SSLContext.getInstance("SSL") और SSLContext.getInstance("TLS"), या अन्य संभावित मूल्यों के उपयोग के बीच क्या परिवर्तन होता है?

+0

देखें http://en.wikipedia.org/wiki/Transport_Layer_Security –

+3

क्या आपने [प्रलेखन] (http://docs.oracle.com/javase/6/docs/api/javax/net/ पढ़ने की कोशिश की है) SSL/SSLContext.html # getInstance% 28java.lang.String% 29)? – Kai

+0

मैं उन्हें खोजता हूं, और एसएसएल, एसएसएलवी 3, टीएलएस के बीच भिन्नता जानता हूं, मैं सर्वर और क्लाइंट के बीच विभिन्न प्रोटोकॉल प्रकार के बीच संचार को नहीं जानता। धन्यवाद – user1781746

उत्तर

0

प्रोटोकॉल का उपयोग सर्वर और क्लाइंट के बीच संचार के लिए किया जाता है। तो SSLContext(String protocol) प्रोटोकॉल का उदाहरण देता है और फिर उस सर्वर या क्लाइंट का उपयोग सुरक्षा स्तर के लिए एक दूसरे के साथ संवाद करता है।

अधिक जानकारी के लिए इस लिंक को संदर्भित करें। http://www.herongyang.com/JDK/SSL-java-net-ssl-SSLContext-Class-Test.html

+0

मैंने अभी कहा है कि सर्वर में, मैं एक प्रोटोकॉल 'टीएलएस' बनाता हूं। SSLCOntext (स्ट्रिंग प्रोटोकॉल) का अर्थ क्लाइंट प्रोटोकॉल प्राप्त करना है? मुझे समझ में नहीं आता कि यह क्यों काम करता है क्लाइंट में मैं SSLContext.getInstance ("ssl") को कॉल करता हूं। 'एसएसएल' और 'टीएलएस' अलग प्रोटोकॉल प्रकार हैं। मेरी अंग्रेजी खराब है, मुझे अस्पष्ट प्रश्न – user1781746

+0

के लिए बहुत खेद है, पहला वाक्य अस्पष्ट है। दूसरी वाक्य गलत है: getInstance() 'प्रोटोकॉल का एक उदाहरण' वापस नहीं करता है; यह SSLContext का एक उदाहरण दोबारा शुरू करता है। अंतिम पैराग्राफ एक गैर-मानक और मूल रूप से अप्रासंगिक संदर्भ बताता है। – EJP

+0

@Angel इसे हटाने और हटाने के बारे में झुकाव के बजाय, क्यों नहीं * इसे ठीक करें? – EJP

28

यहां एक rather detailed answer है जिसे मैंने कुछ समय पहले एसएसएल और टीएलएस के बीच अंतर का वर्णन किया था। संक्षेप में, टीएलएस एसएसएल का उत्तराधिकारी है, और टीएलएस 1.0 को "एसएसएल 3.1" के रूप में माना जा सकता है।

आप JSSE Reference Guide, in the SSLContext section को देखें, तो यह कहते हैं:

ये स्थिर तरीकों प्रत्येक एक उदाहरण है कि कम से कम का अनुरोध सुरक्षित सॉकेट प्रोटोकॉल लागू करता है लौटने। लौटाया गया उदाहरण अन्य प्रोटोकॉल को भी लागू कर सकता है। उदाहरण के लिए, getInstance ("TLSv1") एक उदाहरण लौटा सकता है जो "TLSv1", "TLSv1.1" और "TLSv1.2" लागू करता है।

यह Standard Names दस्तावेज़ में भी उल्लेख किया गया है।

कि विशेष रूप से, अगर आप SSLContextImpl के लिए Oracle/OpenJDK 7 स्रोत कोड की जांच, आप मिल जाएगा अपने सभी SSLContext रों समर्थन (TLS 1.2 के लिए एक SSLv2 ग्राहक हैलो का उपयोग कर SSLv3 से) सभी प्रोटोकॉल। डिफ़ॉल्ट रूप से कौन से प्रोटोकॉल सक्षम हैं, यह अलग-अलग है। इसके अतिरिक्त, आपको सामान्य रूप से इस पर भरोसा नहीं करना चाहिए, क्योंकि अन्य जावा कार्यान्वयन (जैसे आईबीएम जेआरई) अलग-अलग व्यवहार कर सकता है।

यदि आप कनेक्शन के लिए प्रोटोकॉल का एक विशेष सेट उपयोग करना चाहते हैं, तो आपको SSLSocket या SSLEngine की setEnabledProtocols विधि का उपयोग करना चाहिए। अन्यथा, यह Providers documentation में वर्णित अनुसार डिफ़ॉल्ट मानों का उपयोग करेगा।

संबंधित मुद्दे