web-dev-qa-db-fra.com

Comment activer SSL 3 dans Java

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é?

11
Evandro Pomatti

À 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.

12
Evandro Pomatti

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

9
Aydin K.

Vous pouvez définir le jdk.tls.disabledAlgorithms propriété de sécurité à l'exécution comme ça.

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

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
3
Chris Horting