Afficher le certificat SSL d'une page qui redirige immédiatement vers une autre

25

J'ai donc googlé un peu pour cela, mais il semble que mon google-fu me manque - excuses si c'est une question triviale et déjà répondue, je n'ai rien trouvé à ce sujet

J'essaie de diagnostiquer une incompatibilité de nom d'hôte de certificat SSL. Lorsque je visite l'URL en question, il me redirige vers une autre page qui a le bon certificat SSL. Cependant, certains clients signalent qu'ils reçoivent une erreur de non-correspondance du nom d'hôte du certificat SSL. Ma seule hypothèse est que la page de redirection a le mauvais certificat et certains clients la laissent glisser car elle se résout avec une nouvelle page qui a le bon certificat.

(Le comment et le pourquoi du problème n'est pas vraiment la question)

La question:

De l'extérieur dans (aka, en tant que client dans le monde) - comment pourrait-on voir le certificat qui a été délivré par une page qui redirige automatiquement vers une autre page?

Robert Petz
la source
Une autre ressource utile est le SSL Server Test de Qualy's SSL Labs.
TRiG

Réponses:

35

Utilisez openssl s_client canalisé vers openssl x509 :

$ openssl s_client -connect foo.example.com:443 < /dev/null | openssl x509 -text

(Ajoutez -servername foo.example.comà la commande s_client si le serveur utilise SNI .)

La redirection de stdin à partir de / dev / null pour la première invocation d'openssl l'empêchera de se bloquer en attendant l'entrée.

EEAA
la source
2
Vous pouvez également diriger la sortie openssl x509 -textpour voir réellement ce qui est dans le cert du serveur, et rediriger l'entrée de la première opensslcommande de /dev/nullsorte que la commande ne se bloque pas: openssl s_client -connect ... < /dev/null | openssl x509 -text. Recherchez le champ «Autre nom du sujet X509v3».
Andrew Henle
@AndrewHenle Excellent ajout. N'hésitez pas à modifier cela dans ma réponse si vous le souhaitez.
EEAA
Fonctionné comme un charme - je n'ai passé qu'un temps limité avec openSSL, mais à chaque fois que je dois faire quelque chose de ssl, cela revient toujours à ça haha ​​... Merci pour le conseil!
Robert Petz
6
Si le serveur utilise SNI, vous devez ajouter -servername foo.example.comaux s_clientoptions.
Bruno
Je ne vois pas la chaîne de confiance dans la sortie. Si je veux voir si un site Web est approuvé par VeriSign ou LetsEncrypt ou ChineseGov ou DO_NOT_TRUST_FiddlerRoot, que dois-je rechercher?
Carl Walsh
7

Dans Firefox 57, si vous ouvrez les outils de développement et accédez à l'onglet Réseau:

  1. Assurez-vous que la Persist Logscase est cochée
  2. Visitez l'URL qui vous intéresse
  3. Cliquez sur la ligne du haut (c'est-à-dire celle correspondant à la demande adressée au serveur qui vous intéresse, qui a abouti à la réponse de redirection)
  4. Cliquez sur l' Securityonglet (à mi-chemin, toujours à l'intérieur Network)

Cela vous permettra d'afficher les informations du certificat telles que le nom commun de l'émetteur, les détails de l'émetteur, la période de validité et les empreintes digitales.

Cela a fonctionné pour moi sur un site répondant avec une redirection 301 vers un autre site Web HTTPS. (Malheureusement, la réponse acceptée vient de me donner le certificat pour la page de destination finale.)

mpavey
la source
Merci pour une méthode native de navigateur. Avez-vous essayé l' -servernameoption avec openssl? Cela peut donner un résultat différent, même s'il s'agit du même nom.
mwfearnley
@mwfearnley Non! Avec openssl, je viens de copier et coller de la réponse et j'ai abandonné après que cela n'ait pas fonctionné :) Merci pour la suggestion.
mpavey
1

Comme alternative aux programmes séparés mentionnés dans d'autres réponses, vous pouvez également désactiver la redirection automatique dans votre navigateur.

L'option pour ce faire varie selon le navigateur, voici les méthodes pour Firefox et Chrome:

jpa
la source
Vous ne savez pas qui a voté contre?
Robert Petz
Oui, c'est exactement ce que je voulais, une solution complètement dans le navigateur.
Michael12345
1
Cela ne fonctionnait pas pour moi dans Chrome. Je peux voir le 302 dans la trace réseau, mais je ne vois pas comment inspecter le certificat à partir des traces réseau. Si je clique sur l'onglet Sécurité, Chrome me montre à la place le certificat de la page Web actuelle (la cible de redirection).
Carl Walsh
Le downvote est probablement dû au fait que les réponses «lien uniquement» ont tendance à pourrir au fil des ans à mesure que les produits changent. Peut-être que cette réponse a fonctionné avant que Chrome n'introduise l'onglet Sécurité?
Carl Walsh
1
@jpa Le lien que vous avez fourni pour Chrome semble expliquer comment conserver le journal réseau après une redirection, plutôt que comment empêcher Chrome de suivre la redirection.
mpavey