当服务器是 https 时,有没有办法查看发送的数据?

Is there a way to see sent data when the server is https?

我正在尝试查看我的浏览器发送到使用 https 协议的服务器的数据(使用 tcpdump)
tcpdump -i 任意 -w /tmp/http.log
但应用程序数据已加密(正如预期的那样)。 我想知道当服务器是 https 时,有没有办法在加密数据之前查看数据?

编辑:加密流量由 Firefox、Chrome、IE...

等常见网络浏览器创建

如果您控制服务器,您可以将其设置为允许空密码,然后强制您的客户端使用相同的密码。空密码只是 "unencrypted" 的一种奇特表达方式。永远不要部署它,因为即使将它作为密码列表中的一个选项也是非常不安全的。

您还可以向客户端添加可信密钥,并让客户端使用代理。与代理的通信使用您创建的可信密钥,并且可以在发送数据之前查看数据,并使用目标服务器的密钥进行加密。这实际上是一个 "Man in the Middle attack," 并且可以被证书固定之类的东西打败。一些公司使用它来跟踪员工计算机的使用情况(当以这种方式使用时,它有些争议)。

严格来说,这两种攻击都是为了绕过加密,而不是在数据加密之前查看数据。要在加密之前查看它,通常,您必须修改客户端或服务器以记录它发送的内容(或者可能使用调试器),因为通常加密是由直接链接到程序的库完成的。

编辑:Chrome 和 Firefox 中的开发人员工具可能是您要找的:如果您单击 "network" 选项卡上的页面(在 chrome 中,我不'有 FF,但它具有几乎完全相同的东西)您几乎可以看到正在发送和接收的信息的所有方面。

只需在您的计算机上使用 Charles Proxy(免费试用)。如果证书被固定,这将不起作用,而浏览器可能不是这种情况..