为什么要使用HTTPS,当Fiddler可以解密它?

37
我刚刚发现Fiddler可以解密HTTPS流量。
例如,我使用HTTPS在本地主机上部署了一个网站。当在Fiddler中检查数据包时,我能够查看所有信息,因为它有一个解密选项。
我的问题是,既然Fiddler可以轻松解密HTTPS,为什么要使用HTTPS?

HTTPS可以保护客户端和服务器之间的窃听者。 - Colonel Panic
@ColonelPanic 我明白。然而,我刚刚发现Fiddler可以轻松解密HTTPS。那么使用HTTPS的意义是什么,当Fiddler可以轻松解密它? - Joe Borg
还是因为使用 Fiddler 解密的网站是从本地主机部署的? - Joe Borg
2个回答

36
Fiddler使用中间人攻击技术(MITM)。为了使其正常工作,您需要信任它的证书:

http://www.fiddler2.com/fiddler/help/httpsdecryption.asp

如果你不这样做,它将无法解密任何内容...
如何使用Fiddler2调试HTTPS流量?
A:Fiddler2依赖于“中间人”方法来拦截HTTPS。对于您的Web浏览器,Fiddler2声称自己是安全的Web服务器,并且对于Web服务器,Fiddler2模仿Web浏览器。为了假装成Web服务器,Fiddler2动态生成一个HTTPS证书。
Fiddler的证书不受您的Web浏览器信任(因为Fiddler不是受信任的根认证机构),因此在Fiddler2拦截您的流量时,您将在浏览器中看到一个HTTPS错误消息[...]

1
那么保护免受HTTPS解密的唯一方法就是首先不信任证书,我的理解正确吗? - Joe Borg
1
假设用户接受了证书,那么我说 Fiddler 就能解密信息了,这样说对吗? - Joe Borg
是的,因为它声称自己是目的地;)如果您不信任它,那么您应该是安全的。 - Andrea Ligios
3
提供的答案很好。如果你想了解它内部是如何工作的,可以在这里的幻灯片10和11上找到一个类似工具 - MITMProxy的很好的解释:https://www.owasp.org/images/7/73/SlayingDragons-ccbysa30nz.pdf 。正如Andrea Ligios所指出的那样,Fiddler2和MITMProxy都需要用户信任中间证书。然后请求被转发到上游(合法)HTTPs网站。类似地,代理从合法服务器接收响应,就像客户端一样解密,使用中间密钥重新加密并转发给客户端。 - Aaron Newton
如果我在一台公共计算机上,管理员接受了 Fiddler 证书,那该怎么办? - Sylvain Gantois
显示剩余2条评论

20
为了解密HTTPS流量,您必须首先将Fiddler的根证书安装到您的“受信任/根证书”列表中。Fiddler的根证书并非默认随操作系统提供的根证书。通常,操作系统会在您尝试安装此证书时发出警告。

这样做,您明确地开始信任由Fiddler的根证书签名的任何证书。现在,当您进行https请求时,Fiddler将与您执行中间人攻击。

假设您以https://google.com的形式发出请求。 Fiddler现在将充当实际的Google服务器,并为Google.com创建一个虚拟证书,并使用Fiddler的根证书对其进行签名。 您将收到已由Fiddler签名的此虚拟证书。由于Fiddler的根证书现在位于您的受信任证书中,因此此证书将通过设备的验证。现在,您的设备将通过安全的HTTPS连接与Fiddler进行通信。 Fiddler将将您的消息转发给Google.com,然后再发送回给您。 当然,Fiddler将能够解密它们。

需要注意的是,Fiddler到Google的流量将通过第二个安全的HTTPS通道进行。

因此,请不必担心https提供的安全性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接