Estoy tratando de reconfigurar mi servidor Apache Tomcat para usar solo TLSv1. Sin embargo, todavía está volviendo a SSLv3 usando ciertos navegadores.
Configuré la etiqueta <connector> con la siguiente configuración:
<Connector ...
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA" sslEnabledProtocols="TLSv1" />
¿Me falta una configuración o tengo algo presente que no debería tener presente?
ssl
tomcat
configuration
poodle
rmiesen
fuente
fuente
sslProtocols=TLSv1
versossslProtocol="TLS"
(¿Te das cuentas
?). Especificar sus versiones de Tomcat y Java lo salvará de la locura.Respuestas:
Dependiendo de la versión de Tomcat 5 y la Versión 6, SSLEnabled = "true" podría no funcionar ya que se agregó a mediados de lanzamiento. Para superar esto, solo necesita editar lo siguiente: sslProtocols = TLS Para: sslProtocols = "TLSv1, TLSv1.1, TLSv1.2"
Parece extraño pero aunque dice TLS, contiene el SSL 3.
Esto lo solucionó en nuestro Tomcat 5.5.20 y nuestras instancias de Tomcat 6. -Greg
Creo que lo que debes hacer es:
Jboss:
No estoy seguro de la definición del conjunto de cifrado, sin embargo, sslprotocols solo debe establecerse en TLSv1, TLSv1.1, TLSv1.2
dependiendo de su versión de tomcat será diferente, otras posibles soluciones:
Tomcat 5 y 6
** En las distribuciones basadas en RHEL5, lo siguiente se aplica a las versiones de Tomcat 6 anteriores a Tomcat 6.0.38 **
Tenga en cuenta que
TLSv1.1,TLSv1.2
es compatible con Java 7, no con Java 6. Agregar estas directivas a un servidor que ejecuta Java 6 es inofensivo, pero no habilitará TLSv1.1 y TLSv1.2.Tomcat> = 7
Conectores APR Tomcat
lo anterior se modifica para satisfacer las especificaciones de sus conectores anteriores. Fuente: https://access.redhat.com/solutions/1232233
fuente
sslEnabledProtocols
no funcionó para nosotros en Tomcat 6.sslProtocols = "TLSv1,...."
sí.Tengo un caso de uso similar, que es permitir que Tomcat 7 use estrictamente solo TLSv1.2, no recurrir a protocolos SSL anteriores como TLSv1.1 o SSLv3.
Estoy usando: C: \ apache-tomcat-7.0.64-64bit y C: \ Java64 \ jdk1.8.0_60.
Siguiendo estas instrucciones: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html . Tomcat es relativamente sencillo de configurar el soporte SSL.
De muchas referencias probé muchas combinaciones, finalmente encontré 1 que obligará a Tomcat 7 a aceptar solo TLSv1.2. 2 lugares necesarios para tocar:
1) En C: \ apache-tomcat-7.0.64-64bit \ conf \ server.xml
dónde
keystoreFile
= almacén de confianza autofirmado localorg.apache.coyote.http11.Http11Protocol
= Implementación JSSE BIO.No utilizamos
org.apache.coyote.http11.Http11AprProtocol
, ya que funciona con openssl. El openssl subyacente recurrirá para admitir protocolos SSL anteriores.2) Cuando inicie Tomcat, habilite los siguientes parámetros del entorno.
Se requiere la restricción JAVA_OPTS; de lo contrario, Tomcat (que funciona con Java8) recurrirá a los protocolos SSL anteriores.
Poner en marcha Tomcat
C:\apache-tomcat-7.0.64-64bit\bin\startup.bat
Podemos ver que JAVA_OPTS aparece en el registro de inicio de Tomcat.
Entonces, podemos usar el comando openssl para verificar nuestra configuración. Primero conecte localhost: 8443 con el protocolo TLSv1.1. Tomcat se niega a responder con el certificado del servidor.
Conecte localhost: 8443 con el protocolo TLSv1.2, Tomcat responde ServerHello con el certificado:
Esto demuestra que Tomcat ahora responde estrictamente solo a la solicitud TLSv1.2.
fuente
JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2
no es necesario (Tomcat 8.0.29, Java 1.8.0_74). Tampoco se menciona aquí: wiki.apache.org/tomcat/Security/POODLELa documentación de Tomcat 7 establece claramente que las opciones
sslEnabledProtocols
ysslProtocol
son compatibles y que existe una superposición entre ellas:https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
fuente
En Tomcat 6.0.41, deberá usar el conector de bloqueo ya que el NIO ignora esa configuración.
http://wiki.apache.org/tomcat/Security/POODLE
http://mail-archives.apache.org/mod_mbox/tomcat-users/201410.mbox/%[email protected]%3E
Conector puerto = "443" protocolo = "org.apache.coyote.http11.Http11Protocol" maxThreads = "200" esquema = "https" seguro = "verdadero" SSLEnabled = "verdadero" clientAuth = "falso"
keystoreFile = "tomcat.jks "keystorePass =" changeit "sslEnabledProtocols =" TLSv1, TLSv1.1, TLSv1.2 "/>
fuente
En Tomcat 5.5 debe usar el parámetro no documentado
para restringir el uso de excatly esta versión de protocolo.
fuente
Para deshabilitar SSL 3 (POODLE) en Jboss 4.0.3 SP1 (Tomcat 5.5 con java 1.5) en server.xml, cambie su código de esta manera.
<Connector port="443" address="${jboss.bind.address}" maxThreads="100" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/eCP.keystore" keystorePass="password" sslProtocol="TLS" protocols="TLSv1,TLSv1.1,TLSv1.2" />
fuente
para los Tomcats más nuevos, use sslProtocols y sslEnabledProtocols como este:
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true" URIEncoding="UTF-8" keystorePass=""/>
fuente
En primer lugar, como dice @iviorel, no
sslProtocols
lo essslProtocol
. (¿Por qué su respuesta se volvió negativa?)JSSE
Para mí, en Tomcat 7 y Java 7,
sslProtocol
en la siguiente configuración no funciona:Dice:
Pero lo siguiente funciona bien:
APR
Para deshabilitar SSL v3 y habilitar el protocolo TLSv1:
Para habilitar los protocolos TLSv1, TLSv1.1, TLSv1.2:
O:
Nota: los valores "TLSv1.1", "TLSv1.2" requieren Tomcat Native 1.1.32 y una versión de Tomcat que lo admita.
fuente