Maison >Java >javaDidacticiel >Comment puis-je corriger l'erreur « java.security.cert.CertificateException : Aucun nom alternatif de sujet présent » lors de l'accès à un service Web via HTTPS ?
Correction de l'erreur "java.security.cert.CertificateException : aucun nom alternatif de sujet présent"
Lors de l'accès à un service Web via HTTPS à l'aide un client Java rencontrant l'erreur « java.security.cert.CertificateException : Aucun nom alternatif de sujet présent » indique une incompatibilité entre le nom du sujet du certificat et l'adresse de l'hôte.
Pour résoudre ce problème, procédez comme suit :
Cependant, cette méthode n'est pas toujours possible. faisable si vous n'avez pas de contrôle sur le certificat du serveur.
Une solution alternative consiste à désactiver les contrôles HTTPS. Cette approche implique la création d'un gestionnaire de confiance personnalisé et d'un vérificateur de nom d'hôte qui permettent d'accepter tous les certificats. Dans la classe "ISomeService", ajoutez le code suivant :
static { disableSslVerification(); } private static void disableSslVerification() { // Create a trust manager that does not validate certificate chains 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) { } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // 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); }
Notez que la désactivation des vérifications HTTPS n'est pas recommandée pour les environnements de production en raison de problèmes de sécurité.
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!