Depuis Java 8 Update 31 le protocole SSL 3 est désactivé par défaut en raison de failles de sécurité dans le protocole SSL (voir attaque POODLE ).
Même s'il n'est pas recommandé, comment peut-il être activé?
À moins que vous n'ayez d'autre choix que d'utiliser SSL 3, le lien ci-dessous explique la configuration.
Les notes de mise à jour pour la mise à jour 31 fournissent des informations pour réactiver SSL 3 en Java.
Comme indiqué:
Si SSLv3 est absolument requis , le protocole peut être réactivé en supprimant "SSLv3" de la propriété jdk.tls.disabledAlgorithms dans le fichier Java.security ou en définir dynamiquement cette propriété Security sur "true" avant l'initialisation de JSSE.
Gardez à l'esprit que même le protocole TLS peut être exploité pour permettre un accès non sécurisé avec SSL 3, qui fait également partie de la faille POODLE. L'activation de ceci pour Java ou toute autre technologie ne devrait être un dernier recours que pour des raisons critiques.
Si vous devez réactiver SSLv3.0 sur 8u31, 7u75, 6u91, tout ce que vous avez à faire est de commenter la ligne suivante dans JRE_HOME/lib/security/Java.security :
jdk.tls.disabledAlgorithms=SSLv3
Code:
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);
}
}
}
Production:
Avant d'activer SSL 3.0
$ /jdk1.8.0_31/bin/Java SocketProtocols
Enabled protocols:
TLSv1
TLSv1.1
TLSv1.2
Après avoir activé SSL 3.0
$ /jdk1.8.0_31/bin/Java SocketProtocols
Enabled protocols:
SSLv3
TLSv1
TLSv1.1
TLSv1.2
crédits/source: http://javablogx.blogspot.de/2015/02/enabling-ssl-v30-in-Java-8.html
Vous pouvez définir le jdk.tls.disabledAlgorithms
propriété de sécurité à l'exécution comme ça.
static {
Security.setProperty("jdk.tls.disabledAlgorithms", "");
}
J'ai trouvé que ces deux modifications étaient nécessaires pour se connecter à une carte DRAC 5:
Supprimer MD5:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
Supprimez SSLv3, RC4 et MD5withRSA:
jdk.tls.disabledAlgorithms=DH keySize < 768