2012-03-17 26 views
13

Voglio sapere se Apache Tomcat supporta il protocollo TLS v1.2. Non ho trovato alcuna documentazione su questo! Grazie!Tomcat supporta TLS v1.2?

+0

Tomcat non supporta affatto TLS. È Java (tramite JSSE) o OpenSSL che lo supporta. Quale versione di TLS supportano dipende dalla versione che sono. La tua domanda è mal formata. – EJP

risposta

11

TLS versione 1.2 è supportato da Oracle JDK versione 7, nell'implementazione JSSE. Poiché Tomcat utilizza JSSE come libreria SSL sottostante, dovrebbe essere supportato dalla versione 1.7 di JDK in poi. Controlla anche le tue suite di crittografia SSL abilitate in Tomcat.

Se si utilizza Apache come proxy, consultare Apache e la documentazione OpenSSL sottostante.

Alcuni link:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html (Java SE 7 Miglioramenti della protezione)

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

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

+0

Grazie mille! Alla fine ho ottenuto TLS v1.2 su Tomcat usando la configurazione JSSE. – observer

+1

potresti per favore farmi sapere cosa hai cambiato per quello, ho provato a specificare sslProtocol = "TLSv1.1" nel connettore ma non ha funzionato. – Ashish

2

ero anche cercando di aggiornare sslProtocol a TLSv1.1 e come detto nel sotto collegamenti su Java6 e Java7

Java6 http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html Java7 http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html

Lo SSLContext supportato in java6 sono SSL, TLSv1 e in Java7 SSL, TLSv1, TLSv1.1 e TLSv1.2 sono supportati.

Quindi, per abilitare TLSv1.1 o TLSv1.2 in tomcat, è sufficiente aggiornare a Java7 e modificare sslProtocol in Connector in server.xml di tomcat.

8

Come menzionato da altri, Tomcat supporta TLSv1.2 tramite JSSE in JDK 7+.

Tomcat NON supporta TLSv1.1 o TLSv1.2 quando viene utilizzato con Tomcat Native (APR). Vedi https://issues.apache.org/bugzilla/show_bug.cgi?id=53952.

Aggiornamento: Sembra che TLSv1.2 saranno finalmente supportati in Tomcat 1.1.32 nativo e Tomcat 8.0.15/7.0.57.

9

Ho un caso d'uso simile, che consente a Tomcat 7 di utilizzare rigorosamente solo TLSv1.2, di non ricorrere ai precedenti protocolli SSL come TLSv1.1 o SSLv3. I seguenti passaggi risponderanno come abilitare Tomcat a supportare TLSv1.2.

sto usando: C: \ apache-tomcat-7.0.64-64bit e C: \ Java64 \ jdk1.8.0_60.

Seguendo questa istruzione: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html. Tomcat è relativamente semplice da configurare il supporto SSL.

Da molti riferimenti che ho provato molte combinazioni, finalmente ho trovato uno che far rispettare Tomcat 7 per accettare solo TLSv1.2. 2 posti necessari al tatto:

1) In 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" /> 

dove

keystoreFile = locale di fiducia auto-firmato memorizzare

implementazione

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

Non utilizziamo org.apache.coyote.http11.Http11AprProtocol, perché è alimentato da openssl. Il sottostante openssl ricadrà per supportare precedenti protocolli SSL.

2) All'avvio di Tomcat, abilitare i seguenti parametri di ambiente.

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 restrizione è necessaria, altrimenti Tomcat (che è alimentato da Java8) ricadrà per supportare i protocolli SSL precedenti.

Messa in funzione Tomcat C: \ apache-tomcat-7.0.64-64bit \ bin \ startup.bat

Possiamo vedere JAVA_OPTS compare nel registro di avvio Tomcat.

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 

Quindi, possiamo usare il comando openssl per verificare la nostra configurazione. Innanzitutto connetti localhost: 8443 con il protocollo TLSv1.1. Tomcat rifiuta di rispondere con il certificato del server.

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 

Collegare localhost: 8443 con protocollo TLSv1.2, Tomcat risponde ServerHello con certificato:

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 

Ciò dimostra che Tomcat ora rispondere rigorosamente unica richiesta TLSv1.2.