web-dev-qa-db-fra.com

Comment trouver la version SSL / TLS utilisée dans Java

J'ai un Java (en utilisant Java 1.6.30) qui ouvre une connexion SSL à mon serveur déployé sur Tomcat 7.0.26. Tomcat utilise = Java 6 et dans le server.xml j'ai configuré le connecteur pour utiliser sslProtocol="TLS".

Je me demande quelle est la version SSL utilisée? Est-ce TLS1.0? TLS1.1? Autre chose?

31
Guy

Obtenez le SSLSession de votre SSLSocket sur votre client et utilisez sa méthode getProtocol().

Oracle JRE/OpenJDK 6 prend en charge SSLv3 et TLS 1. . Vous auriez besoin d'au moins IBM JRE 6/7 ou Oracle JRE/OpenJDK 7 pour obtenir la prise en charge de TLS 1.1 et TLS 1.2 . (Ceci est également lié aux suites de chiffrement disponibles, comme mentionné dans cette question .)

30
Bruno

Vous pouvez utiliser l'extrait de code suivant pour obtenir un tableau des protocoles pris en charge:

SSLContext.getDefault().getSupportedSSLParameters().getProtocols()

Si vous le souhaitez en tant que chaîne délimitée par des espaces, par exemple pour la négociation SMTP, passez le tableau à String.join (), c'est-à-dire:

String.join(" ", SSLContext.getDefault().getSupportedSSLParameters().getProtocols())

Ce dernier extrait s'affiche dans Java 8 sous Windows:

SSLv2Bonjour SSLv3 TLSv1 TLSv1.1 TLSv1.2

Et dans Java 11 sur Windows:

TLSv1.3 TLSv1.2 TLSv1.1 TLSv1 SSLv3 SSLv2Bonjour

0
isapir

Vous pouvez découvrir quelle version de TLS votre code utilise en définissant une propriété système: passez -Djavax.net.debug=all dans la commande Java qui démarre l'application. Lorsque l'application négocie la connexion SSL, elle imprime la version TLS, recherchez la chaîne "HelloClient" dans la sortie.

Pour plus d'informations, voir https://docs.Oracle.com/javase/8/docs/technotes/guides/security/jsse/ReadDebug.html

0
Nathan Hughes