websocket - 使用wireshark监控安全网络套接字(wss)

标签 websocket wireshark

我有一个使用安全 websocket 的应用程序,但我遇到了麻烦。

我想使用wireshark 来调试问题,但是我无法找出正确的参数来放入wireshark 来监控和显示使用HTTPS 的安全Web 套接字连接。

有谁知道可以完成我需要的wireshark过滤器,如果我需要做任何其他事情来使用wireshark监控安全的websockets?

最佳答案

如果你想监控浏览器和服务器之间的 WebSocket 连接,那么使用 Chrome 可能是最简单的。或 Firefox开发者工具。

以下适用于使用 HTTP/1.1 的 WebSockets,它可能不适用于使用 HTTP/2 (RFC 8441) 引导的 WebSockets。
以下步骤描述了 Wireshark 3.4.0 的必要步骤,但它也可能适用于较新的版本。

  • 因为安全的 WebSocket 连接(URI 方案 wss)通过 TLS 传输数据,所以使用 Wireshark 解密 TLS 流量的一般步骤适用,请参阅 Wireshark wiki article .
    根据您的设置,这些步骤和数据包捕获可能必须在 WebSocket 服务器启动之前和与客户端的连接建立之前执行。
  • WebSockets 使用 TCP 进行传输,因此您必须使用 Wireshark display filter它只显示相关的 TCP 段。
    例如,如果您的 WebSocket 服务器正在监听端口 443,您可以使用以下内容仅显示该端口的传入和传出数据包:
    tcp.port == 443
    
  • 如果您正确执行了前面的步骤并单击其中一个 TLS“应用程序数据”数据包,它应该在左下角显示一个“解密的 TLS”选项卡:
    Wireshark decrypted TLS tab
  • 如果您使用的是众所周知的 443 端口,那么 Wireshark 能够自行检测到 HTTP 升级到 WebSocket。
  • 但是,如果您使用自定义端口,则必须告诉 Wireshark 如何解码数据包。为此,请右键单击任何数据包并选择“解码为...”:
    Packet context menu 'Decode As...'
  • 在新对话框中,单击“当前”列中的“(无)”,然后从下拉列表中选择“HTTP”:
    Decode as HTTP dropdown

  • 您现在应该看到对 WebSocket 协议(protocol)和所有 WebSocket 消息的 HTTP 升级。此外,您可以检查它们的内容:
    Decoded WebSocket packets
  • 关于websocket - 使用wireshark监控安全网络套接字(wss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294463/

    相关文章:

    node.js - 引擎.io/wss/SSL/HTTP : how to configure?

    c++ - Node js 服务器和 c++ 客户端套接字 io 连接,无法发出或读取数据

    tcp - 如何在Wireshark中过滤掉 "TCP Fast Retransmission"

    python - 使用 Scapy 缩短 TCP 有效负载会导致 [TCP 上一段未捕获]

    ssl - 使用 Wireshark 解密来自应用程序的 SSL/TLS 流量

    go - 并发写入 websocket 连接

    javascript - 通过 WebSocket 同步对象时出现问题?

    websocket - 在 Elm 中,如何根据用户输入打开 websocket?

    c++ - 使用C++提取数据包信息

    wireshark - Capinfos精确时间戳