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

Schakel TLS 1.1 en 1.2 in voor clients op Java 7

Java 7 schakelt TLS 1.1 en 1.2 uit voor clients. Vanaf Java Cryptography Architecture Oracle Providers Documentation :

Hoewel SunJSSE in de Java SE 7-versie TLS 1.1 en TLS 1.2 ondersteunt, is geen van beide versies standaard ingeschakeld voor clientverbindingen. Sommige servers implementeren de forward-compatibiliteit niet correct en weigeren te praten met TLS 1.1- of TLS 1.2-clients. Voor interoperabiliteit schakelt SunJSSE TLS 1.1 of TLS 1.2 niet standaard in voor clientverbindingen.

Ik ben geïnteresseerd in het inschakelen van de protocollen op een systeembrede instelling (misschien via een configuratiebestand), en niet een per-Java-toepassingsoplossing.

Hoe kan ik administratief inschakelen TLS 1.1 en 1.2 systeembreed?

Note : Sinds POODLE wil ik administratief uitschakelen SSLv3 systeembreed. (De problemen met SSLv3 dateren van voor POODLE van minstens 15 jaar geleden, maar Java/Oracle/Developers respecteerden de basis best practices niet, dus gebruikers zoals jij en ik blijven achter met het opruimen van de rommel).

  • *

Hier is de Java-versie:

$ /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)

Respuestas (6)

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

U kunt gewoon de volgende eigenschap -Dhttps.protocols=TLSv1.1,TLSv1.2 toevoegen die de JVM configureert om te specificeren welke TLS-protocolversie moet worden gebruikt tijdens https-verbindingen.

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

Je zou kunnen proberen iets als het volgende toe te voegen aan je opstartscript, uitgaande van 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"

Enkele andere suggesties: https://blogs.oracle.com/java-platform-group/entry/java https://blogs.oracle.com/java-platform-group/entry/java zal gebruik maken van de Tls (https://blogs.oracle.com/java-platform-group/entry/java_8_will_use_tls).

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

Voor Java 7 op Mac OS X ga je naar System Preferences > Java, en het Java Configuratiescherm opent in een apart venster. Vervolgens ga je naar het Advanced tabblad en scroll je naar beneden naar het Advanced Security Settings gedeelte en vink je de Use TLS 1.1 en Use TLS 1.2 selectievakjes aan.

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

Ik heb dit net onderzocht en ik wil dit toevoegen - dit zal niet werken voor JDK , de deployment.properties alleen relevant voor Applets en andere zaken die in de JRE.

voor JDK applicaties draaien (een server die verbinding moet maken met LDAP bijvoorbeeld) de server is een client maar de deployment.security. zou niet werken.

geen manier om het te veranderen tenzij je wat code schrijft zoals SSLContext.getInstance(“TLSv1.2”);

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

Het ziet er naar uit dat de instellingen voor Java Applets en Java Web Start programma’s die op het bureaublad draaien, werken. Zoals anderen hier vermelden kun je deployment.properties bewerken om dat te specificeren.

Hier is een artikel dat laat zien hoe je een groepsbeleid kunt gebruiken om hetzelfde deployment.properties bestand voor alle gebruikers te implementeren: http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for-java-7-update-10-via-gpo.html ](http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for-java-7-update-10-via-gpo.html)

Helaas is er geen manier om dit aan te zetten voor alle java programma’s op een computer die java.exe of javaw.exe direct oproepen. Je moet elk programma dat java gebruikt vinden, het configuratiebestand vinden waar je de parameters opgeeft om door te geven aan java en het te wijzigen.

Voor Tomcat moesten we dit doorgeven zodat de verbindingen van Tomcat naar andere servers TLS 1.1+: -Dhttps.protocols=TLSv1.1,TLSv1.2 gebruiken. Op Linux kan dit gedaan worden door bin/catalina.sh te bewerken of door bin/setenv.sh aan te maken.

Ik weet niet wat er nodig is om Tomcat alleen TLS 1.2 te laten gebruiken aan de server kant. We staan voor met Apache HTTP.

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

Als je vastzit aan Java 7, kun je -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 toevoegen aan de argumenten van de JVM.

Merk op dat dit enkele voorbehouden heeft:

Ondanks deze tekortkomingen denk ik dat dit nuttig zou kunnen zijn, vooral wanneer het protocol waarin men geïnteresseerd is TLS gebruikt maar geen HTTPS is, bijvoorbeeld LDAPS.

[UPDATE] In mijn bedrijf, dat zijn pool van servers op Ubuntu draait, hebben we ons gerealiseerd dat zelfs update 121 van OpenJDK 7 niet genoeg was om dit op de juiste manier te implementeren. We hebben alle servers geüpdatet om 181 te updaten voordat het werkte.