55 votes

Activer TLS 1.1 et 1.2 pour les clients sur Java 7

Java 7 désactive TLS 1.1 et 1.2 pour les clients. De Oracle Providers Documentation de l'architecture de cryptographie Java:

Bien que SunJSSE dans la version Java SE 7 supporte TLS 1.1 et TLS 1.2, aucune des versions n'est activée par défaut pour les connexions client. Certains serveurs n'implémentent pas correctement la compatibilité ascendante et refusent de dialoguer avec des clients TLS 1.1 ou TLS 1.2. Pour l'interopérabilité, SunJSSE n'active pas par défaut TLS 1.1 ou TLS 1.2 pour les connexions client.

Je suis intéressé par l'activation des protocoles au niveau du système (peut-être via un fichier de configuration) et non une solution par application Java.

Comment puis-je activer administrativement TLS 1.1 et 1.2 au niveau du système?

Remarque : depuis POODLE, je voudrais désactiver administrativement SSLv3 au niveau du système. (Les problèmes avec SSLv3 datent d'au moins 15 ans avant POODLE, mais Java/Oracle/Les développeurs n'ont pas respecté les meilleures pratiques de base, donc des utilisateurs comme vous et moi se retrouvent à nettoyer le gâchis).


Voici la version de Java:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Environnement d'exécution Java(TM) SE (version 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (version 23.3-b01, mode mixte)

0 votes

La seule chose qui a fonctionné pour moi a été de définir le SSLContext par défaut comme décrit ici : stackoverflow.com/questions/39157422/…

1voto

AbVog Points 591

Si vous êtes bloqué avec Java 7, vous pouvez ajouter -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 aux arguments du JVM.

Notez que cela comporte plusieurs avertissements :

  • Cela est valide uniquement à partir de Java 7 mise à jour 95. Référence : https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https
  • Ce n'est pas une solution globale au niveau du système, même si cela peut être défini dans une variable d'environnement (par exemple, JAVA_OPTS), auquel cas vous dépendez du support de la variable d'environnement dans vos applications Java.

Malgré ces limites, je pense que cela pourrait être utile, surtout lorsque le protocole qui vous intéresse utilise TLS mais n'est pas HTTPS, par exemple LDAPS.

[MISE À JOUR] Dans mon entreprise, qui exécute son pool de serveurs sous Ubuntu, nous avons réalisé que même la mise à jour 121 d'OpenJDK 7 n'était pas suffisante pour implémenter cela correctement. Nous avons mis à jour tous les serveurs à la mise à jour 181 avant que cela ne fonctionne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X