Il vérifie le certificat CA par rapport aux certificats CA approuvés dans le magasin sécurisé du JDK jre/lib/security/cacerts
ou de tout ce que vous avez configuré.
Il vérifie également que tous les certificats de la chaîne sont approuvés, et pas seulement le signataire immédiat. Par défaut, il ne vérifie pas les certificats révoqués en ligne, mais vous pouvez l'activer dans le fichier de règles java.security
.
Il vérifie également le nom d'hôte par rapport au certificat. Il prend en charge des CN supplémentaires et des CN génériques.
question complémentaire concernant localhost:
localhost
est juste un nom d'hôte comme un autre. Il doit être listé dans le certificat. Mais vous ne trouverez pas de CA officiel pour vous donner ce certificat, je suppose :-)
Si vous voulez jouer avec votre vrai cert sur localhost, vous l'adressez avec un nom d'hôte différent. Si vous voulez exécuter par un cert pour foo.bar.com
, ajoutez à votre fichier hosts
(Win: %WINDOWS%\system32\drivers\etc\hosts
, Unix /etc/hosts
) la ligne:
127.0.0.1 foo.bar.com
feu Maintenant votre navigateur et connectez-vous https://foo.bar.com
. Il se connectera à votre serveur local et affichera une requête HTTP cryptée SSL. Cette requête contient le nom d'hôte de l'URL, pas le vrai nom d'hôte. J'ai été oversimplyfying: Le navigateur reçoit le certificat SSL du serveur et compare le CN contre le nom d'hôte qu'il vient d'appeler. Si cela correspond, il vérifiera si le certificat peut être approuvé (ne me claquez pas sur la commande, peut-être qu'il vérifiera d'abord le niveau de confiance).
Voici où vous échouez: Le certificat fourni par le serveur ne contient pas l'hôte local CN, et ainsi, le client annulera la connexion. Dans votre cas, le client est la demande HttpSSL. Pour que le client pense que tout va bien, vous pouvez faire deux choses: - simuler le nom d'hôte et ajouter l'autorité de certification dans le fichier de clés certifiées cacerts. - implémenter un nom d'hôte et un validateur de certificat, qui vous permet de passer à travers. En ce qui concerne le tutoriel, un certificat auto-signé est utilisé, vous devrez convaincre le navigateur de l'accepter en remplaçant l'avertissement lors du premier accès.
Quelle est la configuration que je devrais rechercher? Je ne suis pas sûr où le magasin de confiance par défaut est défini pour JDK. – user1549994
"Il prend en charge des CN supplémentaires et des CN génériques.".que voulez-vous dire par CNs wildcard. Localhost est-il considéré comme un caractère générique CN? La requête en cours d'envoi utilise l'hôte local mais le certificat renvoyé par le serveur ne contient pas "localhost". – user1549994
Un CERT générique contient un astérisque et fonctionne pour tous les sous-domaines de ce domaine: '* .foo.com' fonctionne pour' bar.foo.com', 'baz.foo.com' etc. Si vous voulez jouer avec localhost, ajoutez-le au certificat. Vois ma réponse. – thst