Maison > Java > javaDidacticiel > Pourquoi est-ce que je reçois une erreur « SSLProtocolException : handshake alert : unrecognized_name » après la mise à niveau vers Java 1.7 ?

Pourquoi est-ce que je reçois une erreur « SSLProtocolException : handshake alert : unrecognized_name » après la mise à niveau vers Java 1.7 ?

Barbara Streisand
Libérer: 2024-12-04 07:01:15
original
1007 Les gens l'ont consulté

Why Am I Getting an

Alerte de prise de contact SSL : erreur de nom non reconnu après la mise à niveau de Java 1.7

Description du problème :

Après lors de la mise à niveau vers Java 1.7, les utilisateurs peuvent rencontrer une « SSLProtocolException : alerte de prise de contact : erreur "unrecognized_name" lors de l'établissement de connexions SSL aux serveurs Web. Ce problème survient généralement lors de la tentative d'accès à des certificats de serveur auto-signés ou mal configurés.

Cause :

Java 1.7 introduit la prise en charge de l'indication de nom de serveur (SNI) par défaut. Alors que la plupart des serveurs Web gèrent efficacement SNI, certains serveurs mal configurés peuvent renvoyer une alerte « Nom non reconnu » lors de la négociation SSL, qui est ignorée par la plupart des clients, à l'exception de Java.

Résolution :

Pour résoudre ce problème, vous pouvez utiliser l'une des solutions de contournement suivantes :

Désactivez SNI via Ligne de commande :

Exécutez votre application avec l'option de ligne de commande suivante :

java -Djsse.enableSNIExtension=false yourClass
Copier après la connexion

Cela désactivera globalement SNI pour l'ensemble de l'application.

Désactiver SNI dans le code Java :

Vous pouvez également désactiver SNI par programme en définissant le Propriété "jsse.enableSNIExtension" avant toute action SSL :

System.setProperty("jsse.enableSNIExtension", "false");
Copier après la connexion

Gestion des alertes de nom non reconnu :

Si vous souhaitez prendre en charge des serveurs mal configurés tout en utilisant SNI :

  1. Créer un SSLSocket avec l'hébergeur souhaité name.
  2. Tentative d'initier une poignée de main (sslsock.startHandshake()).
  3. Si l'erreur unrecognized_name se produit, désactivez SNI en créant un nouveau SSLSocket sans nom d'hôte.

Remarque importante :

Désactivation SNI peut compromettre les meilleures pratiques de sécurité. Si possible, configurez correctement vos serveurs pour qu'ils prennent en charge SNI afin d'éviter ce problème.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal