SSL négociation a Échoué - Java 1.8
Juste à laisser les gens savent au sujet d'un problème que j'ai eu que beaucoup semblaient avoir eu après la mise à jour de Java 1.8. Pas toutes les solutions sont les mêmes donc de poster comment j'ai résolu le problème.
Mais d'abord... Ce n'est pas une solution digne de systèmes de production étant donné que la sécurité est effectivement revus à la baisse. Toutefois, si vous êtes bloqué etc tests. il est probablement tout à fait approprié.
Mon problème est que, peu importe ce que j'ai fait... permis SSLv3 etc. J'ai toujours reçu un
"javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure".
Voici les étapes que j'ai pris pour "résoudre" ce.
Tout d'abord, j'ai découvert qui de chiffrement du serveur à l'aide. Je l'ai fait via openssl.
openssl s_client -host yourproblemhost.com -port 443
Ce taux (à la fin...)
SSL-Session:
Protocol : TLSv1.2
Cipher : RC4-MD5
Maintenant.. ce qui ne nous utilisons "Java-sage" de façon à permettre que de chiffrement?
Dans ce lien, il a les noms et leurs Java homologue. Donc, pour RC4-MD5, nous avons SSL_RSA_WITH_RC4_128_MD5.
ok bon. Maintenant, j'ai ajouté un Système de propriété.
-Dhttps.cipherSuites=SSL_RSA_WITH_RC4_128_MD5
Et dans mon code...
Security.setProperty("jdk.tls.disabledAlgorithms", "" /*disabledAlgorithms */ );
Nouveau.. ce n'est qu'en dernier recours "réparer" ... Mais si vous êtes frapper votre tête vis d'un mur pour essayer de le faire fonctionner (pour les tests), j'espère que c'est utile.
OriginalL'auteur James | 2015-10-09
Vous devez vous connecter pour publier un commentaire.
Avec JDK 1.8.0_51 libération RC4 n'est plus supporté à partir de Java en tant que client (en tant que serveur) à négocier le protocole SSL handshake, RC4 est considérée comme faible (et compromis ) de chiffrement et c'est la raison pour la suppression
http://bugs.java.com/view_bug.do?bug_id=8076221
Vous pouvez toutefois encore d'activer en retrait de la RC4 de
jdk.tls.disabledAlgorithms
de votre sécurité Java config ou progamatically leur permettant, à l'aide desetEnabledCipherSuites()
méthodeCependant meilleure solution serait de mettre à jour la configuration du serveur (si il est sous votre contrôle pour la mise à niveau de plus les Algorithmes
À votre approche sur la configuration en utilisant
Security.setProperty()
, il n'est pas fiable parce que le les champs qui détiennent désactivé algorithmes sont statiques et finale, Donc si cette classe est chargé d'abord, vous n'avez pas le contrôle sur elle, vous pouvez également essayer en créant un fichier de propriétéscomme ce
et dans votre JVM, vous pouvez consulter ce que le système de propriété comme cela
OriginalL'auteur Jigar Joshi
RC4 a été effectivement fissuré Il y a 14 ans.
Le problème n'est pas dans Java 8.
Le problème, c'est que votre serveur est à l'aide de RC4.
OriginalL'auteur Andrew Henle
Noter que la cause ici est le serveur. J'ai seulement posté ceci afin de fournir un travail autour jusqu'à ce que les serveurs (qui pourrait très bien être hors du contrôle du développeur) peut être fixé
OriginalL'auteur James