使用Wireshark监视安全的Web套接字(WSS)

jgr*_*208 7 wireshark websocket

我有一个使用安全网络套接字的应用程序,但我遇到了麻烦。

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

有谁知道wireshark过滤器可以满足我的需要,是否需要做其他事情来使用wireshark监视安全的websocket?

Mar*_*234 4

如果您想监视浏览器和服务器之间的 WebSocket 连接,那么使用ChromeFirefox开发人员工具可能是最简单的方法。


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

  1. 由于安全 WebSocket 连接(URI 方案wss)通过 TLS 隧道传输数据,因此适用使用 Wireshark 解密 TLS 流量的一般步骤,请参阅Wireshark wiki 文章
    根据您的设置,可能必须在 WebSocket 服务器启动之前以及建立与客户端的连接之前执行这些步骤和数据包捕获。
  2. WebSockets 使用 TCP 进行传输,因此您必须使用 Wireshark显示过滤器,它仅显示相关的 TCP 段。
    例如,如果您的 WebSocket 服务器正在侦听端口 443,您可以使用以下命令仅显示该端口的传入和传出数据包:
    tcp.port == 443
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您正确执行了前面的步骤并单击其中一个 TLS“应用程序数据”数据包,它应该在左下角显示“解密的 TLS”选项卡:
    Wireshark 解密 TLS 选项卡
  4. 如果您使用众所周知的端口 443,则 Wireshark 能够自行检测到 WebSocket 的 HTTP 升级。
    1. 但是,如果您使用自定义端口,则必须告诉 Wireshark 如何解码数据包。为此,右键单击任何数据包并选择“解码为...”:
      数据包上下文菜单“解码为...”
    2. 在新对话框中,单击“当前”列中的“(无)”,然后从下拉列表中选择“HTTP”:
      解码为 HTTP 下拉列表
  5. 您现在应该看到 HTTP 升级到 WebSocket 协议以及所有 WebSocket 消息。此外,您还可以检查其内容:
    解码后的 WebSocket 数据包