Ceux-ci peuvent être formulées comme des questions distinctes pour plus de clarté, mais ils sont tous liés à la même question.
Comment sont-certificat SSL du serveur de noms résolus?
Pourquoi les navigateurs semblent utiliser le champ CN du certificat, mais Java du mécanisme semble qu'à regarder "les autres noms de l'objet"?
Est-il possible d'ajouter d'autres noms à un certificat SSL à l'aide de keytool? Si non, est à l'aide d'openSSL plutôt une bonne option??
Juste un peu de contexte: j'ai besoin de pour obtenir d'un serveur principal de communiquer avec plusieurs serveurs en utilisant le protocole HTTPS. Évidemment, nous ne voulons pas acheter des certificats SSL pour chaque serveur (il pourrait y en avoir beaucoup), je tiens donc à utiliser des certificats auto-signés (j'ai été en utilisant keytool pour les générer). Après j'ai ajouter les certificats de confiance dans le système d'exploitation, les navigateurs (IE et Chrome) heureux d'accepter la connexion est fiable. Cependant, même après l'ajout de certificats de Java fichier cacerts, Java ne veut toujours pas accepter la connexion est fiable et lève l'Exception suivante:
Causés par: java.de sécurité.cert.CertificateException: Pas d'autres noms de l'objet présent au coucher du soleil.de sécurité.util.HostnameChecker.matchIP(HostnameChecker.java:142) au coucher du soleil.de sécurité.util.HostnameChecker.match(HostnameChecker.java:75) au com.soleil.net.le protocole ssl.interne.le protocole ssl.X509TrustManagerImpl.checkIdentity(X509T rustManagerImpl.java:264) au com.soleil.net.le protocole ssl.interne.le protocole ssl.X509TrustManagerImpl.checkServerTrusted( X509TrustManagerImpl.java:250) au com.soleil.net.le protocole ssl.interne.le protocole ssl.ClientHandshaker.serverCertificate(Clien tHandshaker.java:1185) 14 de plus ...
J'ai trouvé que je peux faire de Java confiance au certificat de mettre mon propre HostNameVerifier, dont j'ai copié à partir d'ici: com.soleil.jbi.interne.de sécurité.https.DefaultHostnameVerifier juste pour tester (en passant, le nom d'hôte passé comme argument à la HostnameVerifier est correct, donc je pense qu'il doit avoir été accepté).
J'ai été en utilisant le champ de certificat CN que le nom d'hôte (généralement de l'adresse IP).
Quelqu'un peut-il me dire si je fais quelque chose de mal et de me diriger dans la bonne direction?