用c#和Fiddler理解HTTPS

本文关键字:理解 HTTPS Fiddler | 更新日期: 2023-09-27 18:01:15

我的服务器上安装了nginx。我在nginx中启用了SSL。我用openssl工具(自签名)创建了证书。我把它附加到nginx上,所以现在当我去mydomain.com/ver.php时,chrome警告我证书不受信任,这是OK的。

现在,当我在c#中使用WebClient和HTTPS调用这个/ver.php时,一切都可以工作,但是fiddler能够解密HTTPS流量,这是不可接受的,我也看到了来自plus.google.com的请求,这也是通过HTTPS,它被完全解密。那么,为什么会发生这种情况呢?第三方应用程序如何通过HTTPS读取我刚刚用c#编写的应用程序发送的内容?

用c#和Fiddler理解HTTPS

Fiddler有能力进行中间人攻击(检查HTTPS数据包)。您将发现您已经信任提琴手证书。您可以在名为DO_NOT_TRUST_FiddlerRoot可信根证书中找到它。如果您删除此证书,您将收到一个不安全的连接错误。

Fiddler将为您访问的每个网站创建一个证书,由其根证书签名。

您无法阻止最终用户(正在使用您的应用程序的实际用户)读取通过HTTPs请求发送的数据。但是您可以保护HTTPs数据免受中间人攻击。

把摆弄者放在一边,有很多浏览器插件,如Firebug, HTTPFox, Tamper Data等,这将显示你所有的HTTP和HTTPs流量。


对于所有HTTPS通信,浏览器将只接受来自可信CA(如"GoDaddy","DigiCert")的证书。像Google, Facebook这样的网站将使用这些可信CA的证书。

当你在fiddler中启用HTTPs流量解密时,会发生以下事情:

  • Fiddler (Man-in-the-Middle)会自动安装它的根目录证书"DO_NOT_TRUST_FiddlerRoot"到浏览器的CA列表。
  • Fiddler将使用您网站的证书解密HTTP流量。
  • fiddler将使用fiddler签名加密相同的HTTP流量证书,也就是说,您所有的网站调用将有fiddler签名证书。

由于提琴手签名的证书受到用户浏览器的信任(由于步骤#a),您将不会看到任何证书错误。只需从浏览器的CA列表中删除根证书"DO_NOT_TRUST_FiddlerRoot"。您的浏览器将开始提醒您。

我希望这可以帮助你!