HTTPS nom d'hôte de mal: il doit être <sub.domaine.com>. Quelles sont les causes?
Je reçois cette " HTTPS nom d'hôte de mal:' erreur lorsque vous essayez de vous connecter à un serveur en utilisant le protocole https. Mon url ressemble à quelque chose comme ceci
https://sub.domain.com/tamnode/webapps/app/servlet.
Me connecter à l'aide du code suivant
//Create a URLConnection object for a URL
URL url = new URL(requestedURL);
HttpURLConnection.setFollowRedirects(false);
//connect
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("User-Agent", USER_AGENT); //$NON-NLS-1$
OutputStreamWriter wr = new OutputStreamWriter(connection
.getOutputStream());
mais alors obtenez une erreur
IOException: HTTPS hostname wrong: should be <sub.domain.com>.
at sun.net.www.protocol.https.HttpsClient.checkURLSpoofing
....
C'est le code qui a fonctionné dans le passé, mais pas plus. Certains changements ont été apportés à l'architecture du système, mais j'ai besoin d'obtenir plus de données avant d'approcher les responsables.
Ce qui peut provoquer cette erreur? Puis-je désactiver le URLSpoofing vérifier?
Vous devez vous connecter pour publier un commentaire.
Il ressemble le certificat SSL pour domain.com a été donné à sub.domain.com. Ou, plus probablement, ce qui était domain.com a été renommé sub.domain.com sans mettre à jour le certificat SSL.
cletus est juste sur la cause probable.
Il y a un moyen de désactiver la parodie de la vérification, trop.
Vous pouvez créer un objet qui implémente HostnameVerifier qui retourne true en vertu de circonstances plus que "comme d'habitude".
Vous devez remplacer la valeur par défaut HostnameVerifier en appelant setHostnameVerifier sur l'objet de connexion dans le code de la question.
Cette réponse a été "inspiré par": http://www.java-samples.com/showtutorial.php?tutorialid=211
J'ai trouvé ce lien avec cette requête: http://www.google.com/search?q=https+hostname+mauvaise+doit+être
Une note plus: réfléchir à deux fois avant de le faire. Vous allez créer une exploitables faiblesse dans la sécurité entre vos composants client et serveur.
J'ai eu cette exception -
java.io.IOException: HTTPS hostname wrong: should be <localhost>
.Ma solution est que j'ai changé mon certificat auto-signé et de faire de la
CN=localhost
.OU
Ajouter votre certificat de nom de domaine
cn=<domain-name>
à votre fichier host, probablement situé à c:/windows/system32/drivers/etc/...Le code suivant résolu mon problème
Utiliser le nom d'hôte (nom dns) comme nom d'Alias.
Ex:
Java par défaut vérifie que le certificat CN (Common Name) est le même que le nom d'hôte de l'URL. Si le CN dans le certificat n'est pas la même que la nom d'hôte, votre client de service web échoue avec l'exception suivante: java.io.IOException: HTTPS nom d'hôte de mal: ce doit être le nom d'hôte comme dans les certificats.
C'est juste une alternative de "svarog" post