我有一个通过https连接到Web服务的客户端应用程序。我需要“嗅探”Web服务和我的客户端之间的所有网络流量,以检查一切是否正常,即我必须调试连接。
我尝试过Wireshark,但由于我没有服务器私钥,所以wireshark屏幕上显示的数据当然是加密的。
当我无法访问服务器本身以及私钥和其他相关内容时,是否有办法观察客户端和Web服务之间的ssl网络流量?
提前致谢。
答案 0 :(得分:4)
请参阅:Debugging SSL communications。
理论上我知道可以完成 - 您可以设置与目标Web服务通信的代理,指向您的应用程序通过此代理连接。它是一个已知的限制 - Https假定您信任计算机上安装的所有代理和证书。它的形式为Man-in-the-middle attack。
查看Fiddler是否有用。
<强> Man-in-the-middle attacks 强>
在一个 中间人攻击,攻击者 拦截用户流量捕获 凭证和其他相关的 信息。然后攻击者使用 这个信息可以访问实际的 目的地网络。在此期间 进程,攻击者通常服务 作为代表/网关呈现一个 虚假SSL VPN站点给用户;这个 代理/网关传递任何东西 用户输入的身份验证 真正的目的地网站。
答案 1 :(得分:4)
你安装了python吗?
pip install mitmproxy
mitmproxy -p 1234
即使你是video
(顺便说一句,在apt-get更新后,我必须在debian squeeze上安装apt-get install python-lxml)
答案 2 :(得分:2)
Burp Suite(甚至免费版)允许您设置SSL“代理”,它将为您的应用程序提供不同的证书,它将为您解密(并显示)流量。如果你想在localhost中测试服务器,它也允许你设置代理(我在Windows中无法使用Wireshark和Fiddler)。
答案 3 :(得分:0)
如果您无法访问服务器的私钥,则无法查看受SSL / TLS保护的内容。 (至少你会看到最初的握手。)
如果您对客户端拥有完全控制权,则可以编写一个虚假服务器,该服务器具有您控制的私钥和证书,并且会将客户端发送的所有内容转发给实际服务器。为此,您需要让客户端信任您自己的证书,因此您需要控制客户端。可能更容易调整客户端上相应的hosts
文件以执行DNS欺骗,以便将与正确主机名的连接转到您的虚假服务器上。