【问题标题】:how to check if hostname verification takes place during TLS/SSL handshake?如何检查在 TLS/SSL 握手期间是否进行主机名验证?
【发布时间】:2021-08-21 14:15:33
【问题描述】:

我的计算机和外部服务之间有 SSl 套接字连接。我通过仅指定一个 IP 地址进行连接,因此根据我的理解,证书上的名称将与连接时指定的 url 进行比较,因此主机名验证应该失败。如何通过数据包捕获或其他方式确认这一点?谢谢

【问题讨论】:

    标签: http ssl https tls1.2


    【解决方案1】:

    如何通过抓包确认...

    包括主机名验证在内的证书验证在客户端内部完成。因此在网络上无法观察到。

    至少在 TLS 1.2 之前可以在网络上观察到的是服务器发送的证书。因此,您可以进行数据包捕获,将其加载到 Wireshark 并检查那里的叶证书是否匹配正确的主机名验证。如果没有,那么您就知道客户端没有正确检查主机名。如果匹配,您仍然无法确定它是否被客户端检查。

    ... 否则

    通过与客户端不同的主机名访问服务器,例如通过编辑主机文件并将一些任意名称映射到 IP 地址,然后使用此主机名而不是 IP 地址访问服务器。如果成功,客户端不会检查主机名。如果失败,可能是由于主机名检查。

    【讨论】:

    • 谢谢。尝试了第一种方法,我使用 IP 访问服务器,并且在 subjectAltName 部分下的服务器证书中,我看到了 2 个 dns 名称(没有 IP 地址)。所以我想这回答了没有发生HNV?第二个建议也不错,但我无法在我的特定情况下尝试,因为我无法在客户端中指定 IP 以外的任何内容(它是一个简单的套接字连接,不做 dns 解析)
    • @applecodervinegar:“所以我猜这回答了没有 HNV 发生??” - 是的,可能没有检查。请注意,客户端可能希望通过证书指纹或公钥(固定)获得特定证书,在这种情况下不需要主机名验证。您可以使用 mitmproxy 之类的东西检查它是否会接受不同的证书。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2011-06-24
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多