2012-03-17 4 views
13

Apache Tomcat이 TLS v1.2 프로토콜을 지원하는지 알고 싶습니다. 이것에 대한 문서를 찾지 못했습니다! 감사!Tomcat은 TLS v1.2를 지원합니까?

+0

Tomcat은 TLS를 전혀 지원하지 않습니다. Java (JSSE를 통해) 또는이를 지원하는 OpenSSL입니다. TLS 버전은 지원하는 버전에 따라 다릅니다. 귀하의 질문이 잘못되었습니다. – EJP

답변

11

TLS 버전 1.2는 JSSE 구현에서 Oracle JDK 버전 7에서 지원됩니다. Tomcat은 기본 SSL 라이브러리로 JSSE를 사용하므로 JDK 버전 1.7 이상에서 지원되어야합니다. 또한 Tomcat에서 사용 가능한 SSL 암호 스위트를 확인하십시오.

Apache를 프록시로 사용하는 경우 Apache 및 기본 OpenSSL 설명서를 확인하십시오.

일부 링크 :

http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html (자바 SE 7 보안 기능 향상)

http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

+0

대단히 감사합니다! JSSE 구성을 사용하여 Tomcat에서 TLS v1.2를 얻었습니다. – observer

+1

당신은 저를 위해 무엇을 변경했는지 알려주시겠습니까? sslProtocol = "TLSv1.1"을 커넥터에 지정하려고 시도했지만 작동하지 않았습니다. – Ashish

2

http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html 나는 또한 TLSv1.1과 아래에 언급 된 sslProtocol 업그레이드를 찾고 있었다 Java6 및 Java7의 링크

Java6 http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html Java7 SSLContext에이 Java6에서 지원 http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html

는 SSL, TLSv1의하고 Java7 SSL, TLSv1의, TLSv1.1 및 TLSv1.2에서 지원됩니다.

그래서 tomcat에서 TLSv1.1 또는 TLSv1.2를 사용하려면 Java7로 업그레이드하고 tomcat의 server.xml에있는 Connector에서 sslProtocol을 변경하십시오.

8

Tomcat은 JDK 7+의 JSSE를 통해 TLSv1.2를 지원합니다.

톰캣 기본 (APR)과 함께 사용할 경우 톰캣은 TLSv1.1 또는 TLSv1.2를 지원하지 않습니다. https://issues.apache.org/bugzilla/show_bug.cgi?id=53952을 참조하십시오.

업데이트 : TLSv1.2가 Tomcat Native 1.1.32 및 Tomcat 8.0.15/7.0.57에서 최종적으로 지원 될 것으로 보입니다.

9

TLSv1.1 또는 SSLv3과 같은 이전 SSL 프로토콜로 폴백하지 않고 Tomcat 7이 TLSv1.2 만 엄격하게 사용할 수 있도록하는 유사한 사용 사례가 있습니다. 다음 단계는 Tomcat이 TLSv1.2를 지원할 수있게하는 방법에 대한 대답입니다.

C : \ apache-tomcat-7.0.64-64bit 및 C : \ Java64 \ jdk1.8.0_60입니다.

다음 지침을 따르십시오 : https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html. Tomcat은 비교적 간단하게 SSL 지원을 설정할 수 있습니다.

많은 참고 자료에서 많은 조합을 테스트 한 결과, 결국 TLSv1.2 만 수락하도록 Tomcat 7을 시행 할 1 개가 발견되었습니다.

1) C에서 : \ 아파치 - 톰캣-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이 = 지역 자체 서명 신뢰를이 곳은 터치 필요 store

org.apache.coyote.http11.Http11Protocol = JSSE BIO 구현.

org.apache.coyote.http11.Http11AprProtocol은 openssl을 사용하기 때문에 사용하지 않습니다. 기본 openssl은 초기 SSL 프로토콜을 지원하도록 대체됩니다.

2) Tomcat을 시작할 때 다음 환경 매개 변수를 사용하십시오.

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 제한은 그렇지 Tomcat이 (Java8에 의해 구동되는) 이전 SSL 프로토콜을 지원하기 위해 다시 떨어질 필요합니다.

톰캣 C를 시작

: \ 아파치 - 톰캣-7.0.64-64bit \ 빈 \의 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 

그런 다음 openssl 명령을 사용하여 설정을 확인할 수 있습니다. 먼저 localhost : 8443을 TLSv1.1 프로토콜로 연결하십시오. Tomcat은 서버 인증서로 회신을 거부합니다.

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 

이 Tomcat이 지금 엄격하게 TLSv1.2 요청에만 응답 것을 증명한다.