Je voudrais résoudre un problème d'authentification par répertoire avec un certificat client. Je voudrais surtout savoir quels certificats clients acceptables le serveur envoie.
Comment déboguer le handshake SSL, de préférence avec cURL ?
Je voudrais résoudre un problème d'authentification par répertoire avec un certificat client. Je voudrais surtout savoir quels certificats clients acceptables le serveur envoie.
Comment déboguer le handshake SSL, de préférence avec cURL ?
J'ai utilisé cette commande pour dépanner la négociation du certificat du client :
openssl s_client -connect www.test.com:443 -prexit
La sortie contiendra probablement "Acceptable client certificate CA names" et une liste de certificats CA du serveur, ou éventuellement "No client certificate CA names sent", si le serveur ne requiert pas toujours des certificats clients.
Curl a probablement des options pour afficher plus d'informations mais pour des choses comme ça, j'utilise toujours openssl s_client
Avec le -debug
cette option donne beaucoup d'informations utiles
Je devrais peut-être ajouter que cela fonctionne également avec les connexions non HTTP. Donc si vous utilisez "https", essayez les commandes curl suggérées ci-dessous. Si vous ne l'êtes pas ou si vous voulez une deuxième option openssl s_client
pourrait être bon
openssl s_client
au lieu de curl
.-msg
fait l'affaire !-debug
permet de voir ce qui voyage réellement sur la prise.-status
L'agrafage OCSP devrait être la norme de nos jours.
openssl s_client -connect example.com:443 -tls1_2 -status -msg -debug -CAfile <path to trusted root ca pem> -key <path to client private key pem> -cert <path to client cert pem>
Autres interrupteurs utiles -tlsextdebug
-prexit
-state
curl
a un --trace
(et --trace-ascii
), qui imprime pratiquement tout, y compris tous les échanges SSL/TSL. Puisque --trace
remplace les autres options de verbosité, tout ce dont vous avez besoin est de
curl --trace /path/to/trace.log https://example.com
Vous pouvez ensuite vous documenter sur l'ietf afin de faire correspondre les messages du journal aux messages respectifs de la norme - par ex. TLS v1.2 , TLS v1.3 curl imprime même le numéro de message correspondant du standard comme :
== Info: TLSv1.3 (OUT), TLS handshake, Client hello (1):
Où le (1)
est le numéro du message.
--trace-ascii
fonctionne tout comme --trace
mais n'imprime pas les données binaires.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.