java ssl poodle-attack

Cómo habilitar SSL 3 en Java



poodle-attack (4)

Desde Java 8 Update 31, el protocolo SSL 3 está deshabilitado de forma predeterminada debido a fallas de seguridad en el Protocolo SSL (ver ataque POODLE ).

Incluso si no se recomienda, ¿cómo se puede habilitar?


A menos que no tenga otra opción que usar SSL 3, el siguiente enlace explica la configuración.

Las notas de la versión de la actualización 31 proporcionan información para habilitar SSL 3 nuevamente en Java.

Como se dijo:

Si SSLv3 es absolutamente necesario , el protocolo se puede reactivar eliminando "SSLv3" de la propiedad jdk.tls.disabledAlgorithms en el archivo java.security o estableciendo dinámicamente esta propiedad de Seguridad en "verdadero" antes de que se inicialice JSSE.

Tenga en cuenta que incluso el protocolo TLS puede explotarse para permitir un acceso inseguro con SSL 3, que también es parte de la falla de POODLE. Habilitar esto para Java o cualquier otra tecnología debería ser un último recurso solo por razones críticas.


Encontré que estas dos ediciones eran necesarias para conectarse a una tarjeta DRAC 5:

Eliminar MD5:

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

Eliminar SSLv3, RC4 y MD5 con RSA:

jdk.tls.disabledAlgorithms=DH keySize < 768


Puede establecer la propiedad de seguridad jdk.tls.disabledAlgorithms en tiempo de ejecución de esta manera.

static { Security.setProperty("jdk.tls.disabledAlgorithms", ""); }


Si debe volver a habilitar SSLv3.0 en 8u31, 7u75, 6u91, todo lo que tiene que hacer es comentar la siguiente línea en JRE_HOME / lib / security / java.security :

jdk.tls.disabledAlgorithms=SSLv3

Código:

import javax.net.ssl.*; public class SocketProtocols { public static void main(String[] args) throws Exception { SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket soc = (SSLSocket) factory.createSocket(); // Returns the names of the protocol versions which are // currently enabled for use on this connection. String[] protocols = soc.getEnabledProtocols(); System.out.println("Enabled protocols:"); for (String s : protocols) { System.out.println(s); } } }

Salida:

Antes de habilitar SSL 3.0

$ /jdk1.8.0_31/bin/java SocketProtocols Enabled protocols: TLSv1 TLSv1.1 TLSv1.2

Después de habilitar SSL 3.0

$ /jdk1.8.0_31/bin/java SocketProtocols Enabled protocols: SSLv3 TLSv1 TLSv1.1 TLSv1.2

créditos / fuente: http://javablogx.blogspot.de/2015/02/enabling-ssl-v30-in-java-8.html