Comment faire pour activer TLS 1.2 dans Java 7
Je suis en train d'activer TLS 1.2 dans mon application web qui utilise JBoss 6.4 et Java 1.7. J'ai -Dhttp.protocols = TLSv1.2
dans mon environnement de l'application, mais il ne semble pas fonctionner pour moi.
Est-ce que je pourrais faire pour activer TLS 1.2?
J'ai écrit un programme simple
context = SSLContext.getInstance("TLSv1.2");
context.init(null,null,null);
SSLContext.setDefault(context);
SSLSocketFactory factory = (SSLSocketFactory)context.getSocketFactory();
SSLSocket socket = (SSLSocket)factory.createSocket();
protocols = socket.getEnabledProtocols();
Après l'exécution de ce programme au sein de l'application de la TLS 1.2 sera activée. Je ne veux pas exécuter ce programme, mais je veux directement l'activer pendant l'application de démarrage. Est-il possible de le faire?
- sysprop
https.protocols
ne fonctionne que si orthographié avec deux " s " et uniquement pour les connexions avecURL.openConnection
pas d'autres moyens commeSSLSocketFactory
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre à jour votre version de Java 7 pour 1.7.0_131-b31
Pour JRE 1.7.0_131-b31 dans Oracle site :
-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
comme Ankit et Meeraj suggéréIl ya beaucoup de suggestions, mais j'ai trouvé deux d'entre eux, la plupart des communes. J'ai d'abord essayé
export JAVA_OPTS="-Dhttps.protocols=SSLv3,TLSv1,TLSv1.1,TLSv1.2"
sur la ligne de commande avant le démarrage du programme, mais il ne fonctionne pas pour moi.Puis j'ai ajouté le code suivant dans le démarrage constructeur de la classe et il a travaillé pour moi.
Franchement, je ne sais pas en détail pourquoi
ctx.init(null, null, null);
mais tous (SSL/TLS) fonctionnent très bien pour moi.Il y a une option de plus:
System.setProperty("https.protocols", "SSLv3,TLSv1,TLSv1.1,TLSv1.2");
. Il se rendra également dans le code, mais je n'ai pas essayé.Ajouter des options suivantes pour l'application java:
Ajouter ce paramètre à JAVA_OPTS ou à la ligne de commande dans maven:
-Dhttps.protocols=TLSv1.2
System.setProperty("https.protocols", "TLSv1.2");
a fonctionné dans mon cas. Avez-vous vérifié que dans l'application?L'a déclaré réponses sont correctes, mais je suis juste partage d'une chasse aux sorcières qui était applicable à mon cas: en plus de l'utilisation de
setProtocol
/withProtocol
, vous pouvez avoir une certaine mauvaise pots qui ne va pas disparaître, même si le droit des pots plus ancienne:Supprimer
Conserver
Java est compatible, mais la plupart des bibliothèques ne sont pas. Chaque jour qui passe, de plus je souhaite que les bibliothèques partagées étaient hors la loi avec ce manque de responsabilité.
Plus d'info
Pour forcer l'activation du TLSv1.2 dans JRE7u_80 j'ai eu à utiliser l'extrait de code suivant avant la création de connexions JDBC.
En mesure de se connecter à Windows 10 avec SQL server 2017 & TLSv1.2 activé OS.
J'ai résolu ce problème en utilisant
Vous devriez probablement être à la recherche à la configuration des contrôles de la plateforme sous-jacente TLS œuvre par l'intermédiaire d'
-Djdk.tls.client.protocols=TLSv1.2
.