मेरे पास एक समान उपयोग का मामला है, जो कि टॉमस्कैट 7 को केवल TLSv1.2 का सख्ती से उपयोग करने में सक्षम करने के लिए है, न कि पहले के एसएसएल प्रोटोकॉल जैसे टीएलएसवी 1 या एसएसएलवी 3 पर वापस गिरने के लिए।
मैं उपयोग कर रहा हूँ: C: \ Apache-tomcat-7.0.64-64bit और C: \ Java64 \ jdk1.8.0_60।
इस निर्देश का पालन करें: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html । एसएससी समर्थन को सेटअप करने के लिए टॉमकैट अपेक्षाकृत सरल है।
कई संदर्भों से मैंने कई संयोजन का परीक्षण किया, आखिरकार मुझे 1 मिला जो कि टॉमस्कैट 7 को केवल टीएलएसवी 1.2 को स्वीकार करने के लिए लागू करेगा। 2 स्थानों को छूने की जरूरत:
1) C: \ Apache-tomcat-7.0.64-64bit \ conf \ server.xml में
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="ssl/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.2" />
कहाँ पे
keystoreFile
= स्थानीय स्व-हस्ताक्षरित ट्रस्ट स्टोर
org.apache.coyote.http11.Http11Protocol
= JSSE BIO कार्यान्वयन।
हम उपयोग नहीं करते हैं org.apache.coyote.http11.Http11AprProtocol
, क्योंकि यह ओपनसेल द्वारा संचालित है। अंतर्निहित एसएसएल प्रोटोकॉल का समर्थन करने के लिए अंतर्निहित ओपनसेल वापस गिर जाएगा।
2) टॉमकैट शुरू करते समय, निम्नलिखित पर्यावरण मापदंडों को सक्षम करें।
set JAVA_HOME=C:\Java64\jdk1.8.0_60
set PATH=%PATH%;C:\Java64\jdk1.8.0_60\bin
set CATALINA_HOME=C:\apache-tomcat-7.0.64-64bit
set JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2" -Dsun.security.ssl.allowUnsafeRenegotiation=false -Dhttps.protocols="TLSv1.2"
JAVA_OPTS प्रतिबंध की आवश्यकता है, अन्यथा टॉमकैट (जो कि Java8 द्वारा संचालित है) पहले के एजेंट के समर्थन के लिए वापस गिर जाएगा।
टॉमकैट शुरू करें C:\apache-tomcat-7.0.64-64bit\bin\startup.bat
हम देख सकते हैं JAVA_OPTS टॉमकैट स्टार्टअप लॉग में दिखाई देता है।
Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.client.protocols=TLSv1.2
Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dsun.security.ssl.allowUnsafeRenegotiation=false
Oct 16, 2015 4:10:17 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dhttps.protocols=TLSv1.2
फिर, हम अपने सेटअप को सत्यापित करने के लिए ओपनस् कमांड का उपयोग कर सकते हैं। पहले लोकलहोस्ट कनेक्ट करें: 8443 टीएलएसवी 1.1 प्रोटोकॉल के साथ। टॉम्कट सर्वर प्रमाणपत्र के साथ उत्तर देने से इंकार करता है।
C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_1
Loading 'screen' into random state - done
CONNECTED(000001C0)
5372:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:.\ssl\s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 0 bytes
कनेक्टेड लोकलहोस्ट: 8443 TLSv1.2 प्रोटोकॉल के साथ, Tomcat सर्टिफिकेट के साथ ServerHello का जवाब देता है:
C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_2
Loading 'screen' into random state - done
CONNECTED(000001C0)
depth=1 C = US, ST = Washington, L = Seattle, O = getaCert - www.getacert.com
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
0 s:/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
1 s:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
Server certificate
-----BEGIN CERTIFICATE-----
(ignored)
-----END CERTIFICATE-----
subject=/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
issuer=/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2367 bytes and written 443 bytes
यह साबित करता है कि टॉमकैट अब केवल TLSv1.2 अनुरोध का सख्ती से जवाब देता है।