javax.net.le protocole ssl.SSLException: Reçu alerte fatale: bad_record_mac
Que je suis un "javax.net.le protocole ssl.SSLException: Reçu alerte fatale: bad_record_mac" pour une connexion https. Ce n'est pas le cas, chaque demande-si-je envoyer la même demande en 10 fois je ne reçois cette erreur une fois ou deux fois.
J'ai le code suivant pour valider le certificat:
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
try {
SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("SSLv3");
} catch (NoSuchAlgorithmException e3) {
logException(Arrays.toString(e3.getStackTrace()));
}
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
SSLSocketFactory factory = sslContext.getSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(factory);
} catch (KeyManagementException e) {
logException(Arrays.toString(e.getStackTrace()));
}
//Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
//Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
/*
* end of the fix
*/
J'ai mis deux propriétés du système dans ma méthode principale:
System.setProperty("jsse.enableSNIExtension", "false");
System.setProperty("https.protocols", "SSLv3");
Mais rien n'y fait.
s'il vous plaît aider!
Merci.
ihave définir la propriété déjà
BTW, si la cible est un seul serveur (c'est à dire pas d'équilibrage de la charge avec des objectifs différents), alors il ne correspond pas aux critères de ce bug: bugs.openjdk.java.net/browse/JDK-4615819 (ses dix ans mais n'a jamais été fixe sur le côté client). Mais je tenais à le mentionner comme un cas possible quand il y a un protocole SSL3-seul serveur... (ce qui ne devrait pas être le cas aujourd'hui!)
BTW, si la cible est un seul serveur (c'est à dire pas d'équilibrage de la charge avec des objectifs différents), alors il ne correspond pas aux critères de ce bug: bugs.openjdk.java.net/browse/JDK-4615819 (ses dix ans mais n'a jamais été fixe sur le côté client). Mais je tenais à le mentionner comme un cas possible quand il y a un protocole SSL3-seul serveur... (ce qui ne devrait pas être le cas aujourd'hui!)
OriginalL'auteur Amith | 2014-03-11
Vous devez vous connecter pour publier un commentaire.
Selon cette question rubygems et la description détaillée de l'erreur (voir ci-dessous), il semble être un bogue dans Oracle JDK qui n'est pas présent dans OpenJDK. Je me souviens (mais ne peut pas vérifier) qu'il y avait un bug dans OpenSSL qui a également causé cette erreur, de sorte que vous voudrez peut-être vérifier le logiciel de l'autre côté de la connexion.
Vous pouvez lire plus de détails sur ce que cette erreur signifie ici.
OriginalL'auteur Old Pro
Il est difficile de dire ce que l'origine de ce problème. Vous avez besoin de savoir en analysant les journaux, définir la
et vérifier ce qui est faux.
Un problème peut être que le serveur ne supporte pas le protocole TLS, qui peut être choisi par la mise en œuvre. Pour vous assurer que vous utilisez toujours la plaine SSLv3 par la définition de la propriété:
Une autre cause peut être le mauvais réseau, en causant que de temps en temps certains paquets sont cassés, mais encore la somme de contrôle est correcte. Dans ce cas, vous ne pouvez réessayer la demande.
OriginalL'auteur swist
Essayez jeu com.soleil.net.le protocole ssl.rsaPreMasterSecretFix à vrai
OriginalL'auteur Alex