Comment résoudre l'erreur « java.security.cert.CertificateException : aucun nom alternatif de sujet présent »
Lors de la connexion à un service Web via HTTPS à l'aide d'un client Java, vous pouvez rencontrer l'erreur « java.security.cert.CertificateException : aucun nom alternatif de sujet présent ». Ce problème se produit lorsque le certificat du serveur ne contient pas les champs SAN (Subject Alternative Name) nécessaires qui correspondent au nom d'hôte ou à l'adresse IP utilisée pour accéder au service Web.
Pour résoudre ce problème, procédez comme suit :
1. Extraire le certificat de Certs.txt
Extraire la partie du fichier certs.txt entre -----BEGIN CERTIFICATE----- et -----END CERTIFICATE---- -. Il s'agit du certificat du serveur.
2. Modification du nom du certificat (facultatif)
Vous avez mentionné que vous devez modifier le nom du certificat pour qu'il soit égal à l'adresse IP AAA.BBB.CCC.DDD. Cependant, d'après les documents que vous avez fournis, cela n'est peut-être pas nécessaire. Si vous contrôlez le serveur, vous devez vous assurer que le certificat contient un champ SAN qui correspond à AAA.BBB.CCC.DDD. Sinon, vous pouvez essayer d'utiliser le nom d'hôte comme champ SAN et vérifier si cela résout le problème.
3. Importez le certificat modifié (facultatif)
Si vous avez modifié le certificat, vous devez l'importer à l'aide de keytool -importcert -file fileWithModifiedCertificate.
4. Désactiver les vérifications HTTPS (non recommandé)
Vous pouvez également désactiver les vérifications HTTPS en suivant l'approche décrite dans la réponse que vous avez fournie. Cela implique la création d'un gestionnaire de confiance et d'un vérificateur de nom d'hôte qui ignore la validation du certificat. Cependant, cette solution n'est pas recommandée pour une utilisation en production.
5. Utiliser le nom d'hôte (facultatif)
Si vous ne pouvez pas modifier le certificat ou désactiver les vérifications HTTPS, vous pouvez essayer d'utiliser le nom d'hôte (someSubdomain.someorganisation.com) au lieu de l'adresse IP lors de la connexion au service Web. . Vérifiez si cela résout le problème.
N'oubliez pas que la meilleure solution dépend de votre situation spécifique et du niveau de sécurité requis pour votre application.
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!