2015-01-30 13 views
9

Dal Java 8 Update 31 SSL 3 del protocollo è disabilitato per default a causa di falle di sicurezza nel protocollo SSL (vedi POODLE attack).di SSL 3 in Java

Anche se non consigliato, come può essere abilitato?

risposta

11

Se non avete altra scelta che usare SSL 3, sul link qui sotto spiega la configurazione.

Il release notes for the update 31 forniscono informazioni per l'abilitazione del protocollo SSL 3 di nuovo in Java.

Come dichiarato:

Se SSLv3 è assolutamente necessario, il protocollo può essere riattivato da rimuovendo "SSLv3" dalla proprietà jdk.tls.disabledAlgorithms nel file java.security o dinamicamente impostazione di questa proprietà di sicurezza su "true" prima che JSSE sia inizializzato.

Tenete a mente che anche il protocollo TLS può essere sfruttato per consentire un accesso non sicuro con SSL 3, thats anche parte del difetto barboncino. Abilitare questo per Java o qualsiasi altra tecnologia dovrebbe essere l'ultima risorsa solo per ragioni critiche.

+0

che necessità proprietà da impostare a true .. "impostando dinamicamente questa proprietà di sicurezza su 'true' prima JSSE viene inizializzato." – mohanaki

+0

Dato che dice "dinamico", presumo significhi usare il codice, programmaticamente. – BonanzaOne

3

Se è necessario riattivare SSLv3.0 su entrambi 8u31, 7u75, 6u91 tutto quello che dovete fare è commentare la seguente riga nel JRE_HOME/lib/security/java.security:

jdk.tls.disabledAlgorithms=SSLv3 

Codice:

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); 
    } 

    } 
} 

uscita:

Prima di abilitare SSL 3.0

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

Dopo aver abilitato SSL 3,0

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

crediti/origine: http://javablogx.blogspot.de/2015/02/enabling-ssl-v30-in-java-8.html

2

ho trovato entrambe queste modifiche erano tenuti al fine di connettersi a una scheda DRAC 5:

Rimuovere MD5:

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

Rimuovere SSLv3, RC4, e MD5withRSA:

jdk.tls.disabledAlgorithms=DH keySize < 768 
4

È possibile impostare la proprietà jdk.tls.disabledAlgorithms la sicurezza in fase di esecuzione in questo modo.

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