14

我有一个通过 https 连接到 Web 服务的客户端应用程序。我需要“嗅探”Web 服务和我的客户端之间的所有网络流量,以检查一切是否正常,即我必须调试连接。

我尝试过 Wireshark,但由于我没有服务器私钥,因此在 Wireshark 屏幕上显示的数据当然是加密的。

当我无法访问服务器本身以及私钥和其他相关内容时,有没有办法观察我的客户端和 Web 服务之间的 ssl 网络流量?

提前致谢。

4

4 回答 4

5

请参阅:调试 SSL 通信

我知道理论上可以做到——您可以设置一个与目标 Web 服务通信的代理,将您的应用程序指向通过此代理进行连接。这是一个已知的限制 - Https 假设您信任安装在您机器上的所有代理和证书。它是一种中间人攻击形式。

看看Fiddler是否有用。

中间人攻击

在中间人攻击中,攻击者拦截用户流量以获取凭据和其他相关信息。然后,攻击者使用此信息访问实际的目标网络。在此过程中,攻击者通常充当代理/网关,向用户呈现虚假 SSL VPN 站点;此代理/网关将用户输入的任何身份验证传递给真正的目标站点。

于 2011-06-14T13:37:08.633 回答
4

你有安装python吗?

点安装mitmproxy

mitmproxy -p 1234

甚至是给你的视频

(顺便说一句,在 apt-get 更新后,我必须在 debian 挤压上 apt-get install python-lxml)

于 2012-05-19T07:40:44.263 回答
2

Burp Suite(甚至免费版)允许您设置 SSL“代理”,它将为您的应用程序提供不同的证书,并为您解密(并显示)流量。而且,如果您也想在 localhost 中使用服务器进行测试,它也允许您设置代理(这是我在 Windows 中的 Wireshark 和 Fiddler 无法做到的)。

于 2013-12-05T20:35:52.820 回答
0

如果您无权访问服务器的私钥,那么您就无法查看 SSL/TLS 保护的内容。(你至少会看到最初的握手。)

如果您对客户端拥有完全控制权,则可以编写一个假服务器,该服务器将拥有您控制的私钥和证书,并将客户端发送的所有内容中继到实际服务器。为此,您需要让客户端信任您自己的证书,因此您需要控制客户端。调整客户端上的相应文件以执行 DNS 欺骗可能更容易hosts,以便将正确主机名的连接转到您的假服务器。

于 2011-06-14T14:01:03.390 回答