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