从android emulator调试https

从android emulator调试https,android,https,fiddler,wireshark,man-in-the-middle,Android,Https,Fiddler,Wireshark,Man In The Middle,我有一个android(4.2)应用程序,它使用https与Web服务对话。我想调试/记录每个发出的https。我有fiddler和wireshark来调试它们,但一切看起来都是加密的。是否可以使用emulator和fiddler/wireshark设置中间人攻击,以解码和显示http url及其参数?您可以使用MITM代理,例如。在设备/仿真器上安装CA证书作为受信任证书后,您将能够解密SSL通信 此外,如果您有服务器私钥(即,它是您自己的服务器),如果确实需要低级信息,您可以解密Wiresh

我有一个android(4.2)应用程序,它使用https与Web服务对话。我想调试/记录每个发出的https。我有fiddler和wireshark来调试它们,但一切看起来都是加密的。是否可以使用emulator和fiddler/wireshark设置中间人攻击,以解码和显示http url及其参数?

您可以使用MITM代理,例如。在设备/仿真器上安装CA证书作为受信任证书后,您将能够解密SSL通信


此外,如果您有服务器私钥(即,它是您自己的服务器),如果确实需要低级信息,您可以解密Wireshark截获的流量

我曾经有过同样的需求

这里可以找到很好的解释:

事实证明,一些公司会这样做,尤其是在移动浏览器(Opera、Nokia)的情况下——为了节省带宽,他们将所有流量通过自己的代理服务器传递并压缩。有趣的是,它们还可用于支持HTTPS的站点。他们在您的本地受信任存储中安装了他们的(有点假)证书,并且代理返回用该假证书签名的压缩响应,以便浏览器不会对潜在的攻击进行投诉


我还没有找到任何工具可以帮助创建这样一个代理,所以最后(因为我控制了webservice及其运行的服务器),我在开发过程中启用了纯HTTP。这可能节省了我几个小时的工作;)

我发现最简单的选择是使用mitmproxy。此处列出了简单的步骤:


是的,您可以使用Fiddler来执行此操作。您需要在
Tools->Options
中启用“解密HTTPs流量”选项。Fiddler为SSL通信提供CA证书。你所要做的就是在你的Android设备上安装同样的软件。您可以通过从浏览器转到以下URL获得证书

其中machinesIPAddress是运行fiddler的机器的地址。安装后,您可以在下面看到相同的内容

设置->安全->受信任凭据->用户选项卡

我已经用截图列出了整个过程。希望有帮助-


“https(…)看起来是加密的”。它就是这样做的。https将东西加密,因此没有嗅探器可以读取它。你可以设置一个代理来拦截协商并用你的证书替换证书,但是android会拒绝它,因为它与主机不匹配。另外,你知道你在问什么吗?如果这么简单会有什么后果呢?但是,如果你正在研究调试,我假设这是你的应用程序,这里有3个选项:A/仅从http开始,在一切正常时切换到https。B/在服务器端进行调试。C/使用调试器(!)Fiddler能够充当中间人代理。您只需启用“解密HTTPS”选项并按照Nikolay所述进行操作。我无法执行上述操作,因为我无法控制该操作。我没有此服务器的证书,我找不到一种方法将自签名证书安装到android emulator中。与在设备上一样:设置->安全->从存储安装。如果您将Burp证书复制到外部存储(SD卡),它将拾取该证书并为您提供安装选项。您可以使用或作为web代理来拦截和解密https流量。