如何模拟连接到 HTTPS 并记录握手?

如何模拟连接到 HTTPS 并记录握手?

我有一组 IIS 6 Web 服务器,它们通过 HTTP 和 HTTPS 托管网站。在 Mac 上使用 Safari 4,通过 HTTPS 连接,服务器群中的某些节点会触发浏览器向用户发出证书错误,其他节点则运行正常。总是相同的节点导致问题,但该问题似乎不会发生在 IE 或 Chrome 中。

我推测这些服务器场中的节点配置有误,但我无法通过查看单个服务器设置轻松识别问题。我想将客户端工具指向已知良好的节点,并从客户端的角度捕获 SSL 客户端和服务器问候、证书消息、密钥交换等(未加密),然后在已知问题节点上重复此操作,然后进行比较。

您能否推荐一些 Windows 工具来解决此问题,或者提供更好的故障诊断方法?

答案1

我经常使用OpenSSL 的 s_client.我不明白为什么Win32 版本不应该以同样的方式工作。

您可以使用以下命令来详细了解 SSL 握手:

openssl s_client -debug -msg -state -status -showcerts -connect <host>:443

如果您不想那么喋喋不休,那么您可以放弃一些争论。

您可能还希望-CAfile使用唯一签名 CA进行指定。

答案2

文章HTTPS 连接的最初几毫秒解释你在寻找什么。

答案3

看看 fiddler2 -http://www.fiddler2.com

“Fiddler 是一个 Web 调试代理,它记录您的计算机和 Internet 之间的所有 HTTP(S) 流量。Fiddler 允许您检查所有 HTTP(S) 流量、设置断点以及“摆弄”传入或传出的数据。Fiddler 包含一个强大的基于事件的脚本子系统,并且可以使用任何 .NET 语言进行扩展。”

Fiddler 是一款出色的通用 Web 调试工具。现在,为了达到您的目的,您可能希望结合 David 的建议,即分别连接到每个服务器,并能够从 Fiddler 跟踪正在发生的事情。显然,了解您正在连接到哪个服务器是关键,这样您就可以准确识别问题所在

答案4

农场是如何配置的?如果您可以看到农场的每个节点(即您直接或通过 VPN 在同一网络上,或者它们有面向公众的 IP 地址),您能否连接到每个节点并查看哪个节点存在证书问题?

对于每个节点:

  • 完全地关闭浏览器(如果它已缓存与该名称关联的 IP 地址,因为我们将在下一步中在本地更改该关联)
  • 通过在 hosts 文件中添加条目(在大多数 Windows 配置中为 c:\windows\system32\drivers\etc\hosts),将其直接地址与您期望在证书上的(子)域名关联起来
  • 打开浏览器并访问网站

相关内容