2014-04-29 04:57:20 +0000 2014-04-29 04:57:20 +0000
50
50

Attivare TLS 1.1 e 1.2 per i client su Java 7

Java 7 disattiva TLS 1.1 e 1.2 per i client. Da Java Cryptography Architecture Oracle Providers Documentation :

Sebbene SunJSSE nella versione Java SE 7 supporti TLS 1.1 e TLS 1.2, nessuna delle due versioni è abilitata di default per le connessioni dei client. Alcuni server non implementano correttamente la compatibilità forward e si rifiutano di parlare con i client TLS 1.1 o TLS 1.2. Per l'interoperabilità, SunJSSE non abilita TLS 1.1 o TLS 1.2 di default per le connessioni client.

Sono interessato ad abilitare i protocolli su un'impostazione a livello di sistema (magari attraverso un file di configurazione), e non una soluzione per Java-applicazione.

Come posso abilitare amministrativamente TLS 1.1 e 1.2 system wide?

Nota : dal momento che POODLE, vorrei disabilitare amministrativamente SSLv3 system wide. (I problemi con SSLv3 sono precedenti a POODLE di almeno 15 anni, ma Java/Oracle/Developers non hanno rispettato le migliori pratiche di base, quindi gli utenti come me e te devono ripulire il casino).


Ecco la versione Java:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Risposte (6)

31
31
31
2015-06-16 08:08:06 +0000

Si potrebbe semplicemente aggiungere la seguente proprietà -Dhttps.protocols=TLSv1.1,TLSv1.2 che configura la JVM per specificare quale versione del protocollo TLS deve essere usata durante le connessioni https.

14
14
14
2014-06-18 16:09:55 +0000

Si potrebbe provare ad aggiungere qualcosa di simile al proprio script di avvio, supponendo che Java 1.7:

JAVACMD="$JAVACMD -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -D\ deployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true"

Alcuni altri suggerimenti: https://blogs.oracle.com/java-platform-group/entry/java _8_will_use_tls

9
9
9
2014-04-29 08:46:24 +0000

Per Java 7 su Mac OS X, si va su System Preferences > Java, e il Pannello di controllo Java si apre in una finestra separata. Poi si va alla scheda Advanced e si scorre verso il basso fino alla sezione Advanced Security Settings e si spuntano le caselle Use TLS 1.1 e Use TLS 1.2.

8
8
8
2014-11-05 13:12:56 +0000

Ho appena fatto una ricerca recente e voglio aggiungere - questo non funzionerà per JDK , il deployment.properties rilevante solo per Applet e altre cose in esecuzione nel JRE.

per applicazioni JDK (un server che ha bisogno di connettersi a LDAP per esempio) il server è un client ma il deployment.security. non funzionerebbe.

non c'è modo di cambiarlo a meno che non si scriva del codice come SSLContext.getInstance(“TLSv1.2”);

4
4
4
2015-06-18 17:42:31 +0000

Sembra che le impostazioni di deployment.security.* funzionino per le Java Applet e i programmi Java Web Start che girano su un desktop. Come altri accennano qui, è possibile modificare il file deployment.properties per specificarlo.

Ecco un articolo che mostra come utilizzare una politica di gruppo per distribuire lo stesso file deployment.properties per tutti gli utenti: http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for-java-7-update-10-via-gpo.html &003

Purtroppo non c'è modo di accenderlo per tutti i programmi java su un computer che chiamano direttamente java.exe o javaw.exe. Bisogna trovare ogni programma che utilizza java, trovare il file di configurazione dove si specificano i parametri da passare a java e cambiarlo.

Per Tomcat abbiamo dovuto passare questo in modo che le connessioni da Tomcat ad altri server utilizzino TLS 1.1+: -Dhttps.protocols=TLSv1.1,TLSv1.2. Su Linux questo può essere fatto modificando bin/catalina.sh o creando bin/setenv.sh.

Non so cosa ci vuole per far sì che Tomcat usi solo TLS 1.2 sul lato server. Facciamo fronte con Apache HTTP.

1
1
1
2018-07-04 15:02:10 +0000

Se si è bloccati con Java 7, è possibile aggiungere -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 agli argomenti della JVM.

Si noti che questo ha diversi avvertimenti:

Nonostante queste carenze, penso che questo potrebbe essere utile, soprattutto quando il protocollo a cui si è interessati utilizza TLS ma non è HTTPS, ad esempio LDAPS.

[AGGIORNAMENTO] Nella mia azienda, che gestisce il suo pool di server su Ubuntu, ci siamo resi conto che anche l'aggiornamento 121 di OpenJDK 7 non era sufficiente per implementarlo correttamente. Abbiamo aggiornato tutti i server per aggiornare 181 prima che funzionasse.