जैसा कि आप standard names documentation में देख सकते हैं, सभी प्रविष्टियां (SSLv3, TLSv1.0, TLSv1.1, ...) कहते हैं कि वे अन्य संस्करणों का समर्थन कर सकते हैं।
अभ्यास में, ओरेकल जेडीके (और ओपनजेडीके) में, वे सभी करते हैं। यदि आप source code देखते हैं, तो TLS10Context
कक्षा का उपयोग टीएलएस, एसएसएल, एसएसएलवी 3 और टीएलएस 10, TLS11Context
के लिए किया जाता है, TLSv1.1 और TLS12Context
के लिए TLSv1.2 के लिए उपयोग किया जाता है। सभी एसएसएल/टीएलएस के सभी संस्करणों का समर्थन करते हैं, यह डिफ़ॉल्ट रूप से सक्षम है जो भिन्न होता है।
यह किसी अन्य प्रदाता या जेआरई विक्रेता के साथ अलग हो सकता है। आपको निश्चित रूप से उस प्रोटोकॉल संस्करण का समर्थन करने जा रहा है जिसे आप उपयोग करना चाहते हैं।
ध्यान दें कि प्रयुक्त प्रोटोकॉल बाद में SSLSocket.setEnabledProtocols(...)
या इसके SSLEngine
समकक्ष का उपयोग करने पर निर्धारित किया जाता है।
एक सामान्य नियम के रूप में, आप उच्चतम संस्करण संख्या का उपयोग कर सकते हैं (SSLv3 < TLSv1.0 < TLSv1.1 ...), जो कि पार्टियों के साथ आप किस संवाद के साथ संवाद करना चाहते हैं, इस पर निर्भर हो सकते हैं।
कौन सा प्रोटोकॉल डिफ़ॉल्ट रूप से सक्षम कर रहे हैं ओरेकल JRE का सही संस्करण के आधार पर भिन्न होता है।
जब the source code for sun.security.ssl.SunJSSE
in OpenJDK 7u40-b43 को देख, TLS
बस TLSv1
के लिए एक उपनाम है (और इसलिए SSL
और SSLv3
कर रहे हैं) SSLContext
प्रोटोकॉल के मामले में,।
- सभी समर्थन सभी प्रोटोकॉल: विभिन्न implementations of
SSLContextImpl
को देखते हुए (जो SSLContextImpl
खुद के भीतर कक्षाएं हैं)।
- डिफ़ॉल्ट रूप से सर्वर पर सभी प्रोटोकॉल सक्षम हैं।
- क्लाइंट साइड प्रोटोकॉल डिफ़ॉल्ट रूप से सक्षम हो सकते हैं:
TLS10Context
(प्रोटोकॉल SSL
, SSLv3
, TLS
के लिए इस्तेमाल किया, TLSv1
) क्लाइंट पक्ष पर डिफ़ॉल्ट रूप से TLSv1.0 को SSLv3 सक्षम बनाता है।
TLS11Context
(प्रोटोकॉल TLSv1.1
के लिए इस्तेमाल किया) भी डिफ़ॉल्ट रूप से TLSv1.1 सक्षम बनाता है।
TLS12Context
(प्रोटोकॉल TLSv1.2
के लिए इस्तेमाल किया) भी डिफ़ॉल्ट रूप से TLSv1.2 सक्षम बनाता है।
- FIPS सक्षम है, तो एसएसएल समर्थित नहीं है (ताकि डिफ़ॉल्ट रूप से सक्षम नहीं)।
the new jdk.tls.client.protocols
सिस्टम प्रॉपर्टी के साथ जावा 8 में यह परिवर्तन।
फिर, जब the source code for sun.security.ssl.SunJSSE
in OpenJDK 8u40-b25 को देख, SSLContext
प्रोटोकॉल TLSv1
, TLSv1.1
, और TLS10Context
के उपयोग TLSv1.2
भी करते हैं, TLS11Context
और TLS12Context
, जो जावा में के रूप में ही तर्क का पालन करें 7.
हालांकि, प्रोटोकॉल TLS
अब नहीं है उनमें से किसी के लिए aliased। इसके बजाय, यह TLSContext
का उपयोग करता है जो jdk.tls.client.protocols
सिस्टम गुणों में मानों पर निर्भर करता है। से JSSE Reference guide:
ग्राहक पर विशिष्ट SunJSSE प्रोटोकॉल को सक्षम करने के लिए उन्हें उद्धरण चिह्नों में अल्पविराम से अलग की सूची में निर्दिष्ट; अन्य सभी समर्थित प्रोटोकॉल तब क्लाइंट पर अक्षम कर दिए जाते हैं। उदाहरण के लिए, अगर यह संपत्ति के मूल्य "TLSv1, TLSv1.1" है, तो TLSv1 और TLSv1.1 के लिए क्लाइंट पर डिफ़ॉल्ट प्रोटोकॉल सेटिंग्स क्लाइंट पर, सक्षम होते हैं, जबकि SSLv3, TLSv1.2, और SSLv2Hello पर अक्षम हैं ग्राहक।
यदि यह संपत्ति खाली है, तो सभी प्रोटोकॉल डिफ़ॉल्ट रूप से क्लाइंट और सर्वर दोनों पक्षों पर सक्षम होते हैं।
बेशक
, recent versions of Oracle JRE 8, SSL is also completely disabled by default में (ताकि उन सूचियों से हटा दिया)।
ध्यान दें कि दोनों ही मामलों में (JRE 7 और 8), SSLContext
आप बॉक्स से बाहर SSLContext.getDefault()
के माध्यम से डिफ़ॉल्ट रूप से मिलता है और अधिक या कम एक SSLContext
के बराबर प्रोटोकॉल TLS
के साथ प्राप्त की है और डिफ़ॉल्ट truststore मानकों और इतने पर के साथ initialised है ।
हाय EJP, आप 'SSLContext.getDefault()' का उपयोग करके क्या मतलब है? इसके अलावा, डिफ़ॉल्ट मान क्या हैं? –
@MickaelMarrache संपादित देखें। – EJP