如何检查 TLS/SSL 握手期间是否进行了主机名验证?
how to check if hostname verification takes place during TLS/SSL handshake?
我的计算机和外部服务之间有 SSl 套接字连接。我只是通过指定一个 IP 地址进行连接,因此根据我的理解,证书上的名称将与连接时指定的 url 进行比较,因此主机名验证应该会失败。我如何通过数据包捕获或其他方式确认这一点?谢谢
How can I confirm this through packet capture ...
包括主机名验证在内的证书验证是在客户端内部完成的。因此无法在网络上观察到。
至少在TLS 1.2之前的网络上可以观察到的是服务器发送的证书。因此,您可以进行数据包捕获,将其加载到 Wireshark 中,并在那里检查叶证书是否匹配正确的主机名验证。如果没有,那么您就知道客户端没有正确检查主机名。如果确实匹配,您仍然无法确定它是否被客户端检查过。
... or otherwise
通过与客户端不同的主机名访问服务器,例如通过编辑主机文件并将一些任意名称映射到 IP 地址,然后使用此主机名而不是 IP 地址访问服务器。如果成功,则客户端不会检查主机名。如果失败,可能是由于主机名检查。
我的计算机和外部服务之间有 SSl 套接字连接。我只是通过指定一个 IP 地址进行连接,因此根据我的理解,证书上的名称将与连接时指定的 url 进行比较,因此主机名验证应该会失败。我如何通过数据包捕获或其他方式确认这一点?谢谢
How can I confirm this through packet capture ...
包括主机名验证在内的证书验证是在客户端内部完成的。因此无法在网络上观察到。
至少在TLS 1.2之前的网络上可以观察到的是服务器发送的证书。因此,您可以进行数据包捕获,将其加载到 Wireshark 中,并在那里检查叶证书是否匹配正确的主机名验证。如果没有,那么您就知道客户端没有正确检查主机名。如果确实匹配,您仍然无法确定它是否被客户端检查过。
... or otherwise
通过与客户端不同的主机名访问服务器,例如通过编辑主机文件并将一些任意名称映射到 IP 地址,然后使用此主机名而不是 IP 地址访问服务器。如果成功,则客户端不会检查主机名。如果失败,可能是由于主机名检查。