如何使用cURL调试SSL握手?

问题描述 投票:57回答:4

我想使用客户端证书对每个目录身份验证进行故障排除。我特别想找出服务器发送哪些可接受的客户端证书。

如何调试SSL握手,最好使用cURL?

提前感谢

curl ssl client-certificates
4个回答
61
投票

我已使用此命令对客户端证书协商进行故障排除:

openssl s_client -connect www.test.com:443 -prexit

如果服务器并非总是需要客户端证书,则输出可能包含“可接受的客户端证书CA名称”和来自服务器的CA证书列表,或者可能是“未发送客户端证书CA名称”。


28
投票
curl -iv https://your.domain.io

如果您不希望使用openssl命令,将为您提供证书和标头输出。


6
投票

卷曲可能确实有一些显示更多信息的选项,但是对于这种情况,我总是使用openssl s_client

使用-debug选项,将提供许多有用的信息

也许我应该补充一点,这也适用于非HTTP连接。因此,如果您正在执行“ https”,请尝试以下建议的curl命令。如果您不愿意或想要第二个选项,openssl s_client可能不错


0
投票
  1. 对于TLS握手故障排除,请使用openssl s_client代替curl
  2. -msg会骗人的!
  3. -debug帮助查看实际在套接字上传播的内容。
  4. [-status OCSP装订现在应该是标准的。
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> 

其他有用的开关-tlsextdebug-prexit -state

https://www.openssl.org/docs/man1.0.2/man1/s_client.html

© www.soinside.com 2019 - 2024. All rights reserved.