在 WireShark 中查看普通响应(来自 HTTPS)

View plain response (from HTTPS) in WireShark

我找不到确切的答案。 在类似的主题中,人们说没有私钥就无法查看 HTTPS 响应,但我很惊讶,为什么需要私钥?例如,当浏览器请求 https://example.com 时,它可以读取查看它的 html 输出。

我想在 WireShark 中使用同样的方法(我的一个程序读取来自 https://example.com 的响应并只想查看该页面的输出 HTML)。但是,我不明白为什么这个简单的任务需要私钥?

如果您不需要知道私钥,攻击者也不需要它 – 那么任何 HTTPS 流量,包括登录信息、信用卡号、照片等都可以被网络上的任何人读取与您相同的网络(有人监听 wi-fi 流量),或您与服务器 (ISP) 之间的任何地方。这将是一场灾难。

HTTPS(或更具体地说是 TLS)是为此目的而创建的——能够安全地与远程方通信,而无需完全信任通往远程方的每个节点。它依赖于 public 密钥密码学,这使得使用 public 密钥加密消息变得很容易,但在不知道私钥的情况下极难(或几乎不可能)逆向加密。

通过 HTTPS 与服务器通信的浏览器会根据安全交换的密钥创建 link。只有服务器和浏览器知道这些密钥,因此只有服务器和浏览器可以相互发送和接收消息。

Wireshark,即使它是 运行 在您的计算机上,也不是 运行 浏览器的一部分,因此不知道服务器和浏览器商定的密钥。所以它读取流量是不可能的。

知道即使有人 (Wireshark) 可以读取您的浏览器与服务器交换的所有数据,它也不知道浏览器和服务器商定的密钥,这可能有点令人惊讶。

Traditionally, secure encrypted communication between two parties required that they first exchange keys by some secure physical channel, such as paper key lists transported by a trusted courier. The Diffie–Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel. This key can then be used to encrypt subsequent communications using a symmetric key cipher.

Diffie-Hellman key exchange, Wikipedia