我正在尝试使用我连接到的服务器验证我的应用程序使用的 TLS 版本。通常,我使用 Wireshark,我看到列出的协议为 TLS1.2 或其他内容。
在当前情况下,我正在使用 HTTP 代理。我的理解是 HTTP 代理不执行 TLS 终止,因此在 CONNECT 之后,我的应用程序和服务器之间仍会建立 TLS 会话,尽管从 Wireshark 的角度来看,目的地将是 HTTP 代理的目的地。
当我设置过滤器来捕获发送到 HTTP 代理的流量时,我看到流量中的 CONNECT,但没有看到 TLS 握手。
如何检查此场景中使用的 TLS 版本?
我完全愿意接受其他工具或关于如何解决此问题的建议。我的应用程序在 Linux 机器上。
答案1
我记得有一个跨栈重复项因此进行调整后复制:
Wireshark 根据(大多数情况下)用作源和/或目标的端口进行解码显示。它知道一些标准端口(如 443 和 465)是 SSL/TLS,但它不知道以非标准、临时方式分配的端口——并且对于处理 CONNECT 的 HTTP 代理,这些端口仅是临时的。
在数据包列表窗格中右键单击此会话的数据包并选择 DecodeAs...,或选择一个数据包并选择 Analyze / DecodeAs.... 并在版本 2 中单击“+”(添加)按钮;然后根据需要按端口调整选择,并在右侧下拉菜单中(或在版本 1 列表框中)选择 SSL(实际上意味着 SSL 和 TLS)。