2015-09-08 24 views
15

को अस्वीकार करने के लिए कैसे मजबूर करें मेरे पास जावा 7 पर चल रही एक https वेब सेवा है। मुझे बदलाव करने की आवश्यकता है ताकि यह सेवा केवल tls1.2 कनेक्शन स्वीकार करे और ssl3 को अस्वीकार करे , टीएलएस 1.0 और टीएलएस 1.1।जावा सर्वर को केवल टीएलएस 1.2 स्वीकार करने और टीएलएस 1.0 और टीएलएस 1.1 कनेक्शन

मैंने निम्नलिखित जावा पैरामीटर जोड़ा है ताकि tls1.2 सर्वोच्च प्राथमिकता हो।

-Dhttps.protocols=TLSv1.2 

लेकिन यह जावा क्लाइंट से tls1.0 कनेक्शन भी स्वीकार करता है। यदि ग्राहक उपरोक्त जावा पैरामीटर के साथ भी चल रहा है, तो कनेक्शन tls1.2 है, लेकिन यदि क्लाइंट इस पैरामीटर के बिना चल रहा है, तो कनेक्शन tls1.0 है।

मैंने javak/jre/lib/सुरक्षा फ़ोल्डर में java.security फ़ाइल के आसपास कुछ खेल किया।

मैं वर्तमान में अक्षम एल्गोरिदम निम्नलिखित है:

jdk.certpath.disabledAlgorithms= MD2, MD4, MD5, SHA224, DSA, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224 
jdk.tls.disabledAlgorithms=DSA, DHE, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224 

मैं जावा 7 उपयोग कर रहा हूँ, अद्यतन 79 मैं प्रत्येक कनेक्शन में अवरोध और TLS संस्करण की जांच करने की ओर झुका नहीं कर रहा हूँ।

मेरा सर्वर प्रमाण पत्र आरएसए एल्गोरिदम के साथ एमडी 5 के साथ उत्पन्न 2048 बिट है।

यदि अक्षम एल्गोरिदम सूची में आरएसए कुंजीसाइज < 2048 के स्थान पर आरएसए है, तो मुझे त्रुटि संदेश के साथ SSLHandShakeError मिलता है: कोई सिफर सुइट सामान्य नहीं है।

मेरे परीक्षण कार्यक्रम निम्न URL से http सर्वर चल रहा है: http://www.herongyang.com/JDK/HTTPS-HttpsEchoer-Better-HTTPS-Server.html

कृपया मदद कैसे जावा स्वीकार करने के लिए केवल 1.2 कनेक्शन टीएलएस।

+0

'SSLContext.getInstance (" TLSv1.2 ") 'काम करता है? –

उत्तर

17

मुझे इसके लिए एक समाधान मिला। मैंने

jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1 

फ़ाइल पर jre/lib/security/java.security फ़ाइल में सेट किया है।

इसे सेट करने के बाद, सर्वर केवल TLS1.2 कनेक्शन स्वीकार करता है और कम सुरक्षा प्रोटोकॉल संस्करणों को अस्वीकार करता है।

+6

यह केवल जावा 7 अपडेट 75 और उसके बाद के संस्करण के साथ काम करता है। – PankajSays

+0

इसे कहां सेट करें? – vikifor

+1

आपको इसे "java.security" फ़ाइल में सेट करने की आवश्यकता है जिसे आप /jre/lib/सुरक्षा फ़ोल्डर में पा सकते हैं। – PankajSays

1

बस एक छोटी टिप्पणी;

प्रश्न में आपने कहा था कि आपने MD5 के साथ 2048 आकार प्रमाण पत्र जेनरेट किया है। लेकिन प्रमाण पथ में आपने MD5 को अक्षम कर दिया है, इसलिए यह सामान्य रूप से काम नहीं करना चाहिए। दूसरा एमडी 5 हैश के साथ उत्पन्न सर्वर सर्टिफिकेट इंटरनेट एक्सप्लोरर 10/एज जैसे आधुनिक ब्राउज़रों से प्रतिबंधित हैं।

मैं आपको कम से कम SHA256 या < हैश के साथ अपना सर्वर प्रमाण पत्र जेनरेट करने के लिए सलाह देना चाहता हूं।

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