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=TLSv1versossslProtocol="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.2es 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
sslEnabledProtocolsno 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.batPodemos 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.2no 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
sslEnabledProtocolsysslProtocolson 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
sslProtocolslo essslProtocol. (¿Por qué su respuesta se volvió negativa?)JSSE
Para mí, en Tomcat 7 y Java 7,
sslProtocolen 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