Maison >Java >javaDidacticiel >Pourquoi Java 1.7.0 génère-t-il une alerte de prise de contact SSL « nom_non reconnu » et comment peut-elle être résolue ?
Alerte de prise de contact SSL : une erreur de nom non reconnu réapparaît avec la mise à niveau de Java 1.7.0
Après la mise à niveau de Java 1.6 vers 1.7, les utilisateurs peuvent rencontrer un Alerte de prise de contact SSL caractérisée par le message d'erreur « nom_unrecognisé ». Ce problème survient spécifiquement lors de l'établissement de connexions SSL à un serveur Web.
L'erreur provient de l'introduction de la prise en charge SNI (Server Name Indication) dans Java 7, qui est activée par défaut. Certains serveurs mal configurés répondent avec un avertissement « Nom non reconnu » lors de la prise de contact, qui est ignoré par la plupart des clients, mais pas par Java.
Options de solution de contournement :
Les ingénieurs d'Oracle ont refusé pour résoudre ce problème. Cependant, deux solutions principales sont disponibles :
Désactiver SNI :
Notez que la désactivation de SNI affecte l'ensemble de l'application.
Gérer les serveurs mal configurés :
Pour une approche plus ciblée , suivez les étapes suivantes :
Code Exemple :
SSLSocketFactory factory = (SSLSocketFactory) SSLContext.getDefault().getSocketFactory(); SSLSocket sslsock = (SSLSocket) factory.createSocket(host, 443); try { sslsock.startHandshake(); } catch (SSLException e) { if (e.getMessage().equals("handshake alert: unrecognized_name")) { sslsock = (SSLSocket) factory.createSocket(host, 443); sslsock.startHandshake(); } else { // Handle other errors } }
Conclusion :
En implémentant les solutions de contournement décrites, les utilisateurs peuvent atténuer l'erreur « nom_unrecognisé » lors de l'utilisation de Java 1.7.0 et de l'interaction avec des serveurs mal configurés tout en conservant les capacités SNI pour les autres connexions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!