如何调试ssl连接?

时间:2011-06-14 13:29:35

标签: web-services debugging ssl https sniffing

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

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

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

提前致谢。

4 个答案:

答案 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欺骗,以便将与正确主机名的连接转到您的虚假服务器上。