【问题标题】:Understand HTTPS with C# and Fiddler? [duplicate]用 C# 和 Fiddler 理解 HTTPS? [复制]
【发布时间】:2015-09-23 13:17:40
【问题描述】:

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

现在,当我使用 WebClient 和 HTTPS 在 C# 中调用 /ver.php 时,一切正常,但是提琴手能够解密不可接受的 https 流量,我还看到了来自 plus.google.com 的请求,该请求也是通过 HTTPS它被完全解密。那么为什么会这样呢?第三方应用程序如何通过 HTTPS 读取我刚刚发送给我用 C# 编写的应用程序的内容?

【问题讨论】:

  • 很抱歉,但我仍然不明白如何防止提琴手使用 WebClient 读取从 C# 应用程序发送的消息。
  • 当您告诉 Fiddler(通过其菜单工具 => Fiddler 选项 => HTTPS)解密 HTTPS 时,它会显示警告,说明这会如何危及您的计算机安全。
  • 但我的目标是不允许任何用户读取我发送到服务器并从中接收的内容。如果有人可以安装 Fiddler 并分析我的应用程序生成的 https 请求,那么购买证书并将其放在服务器上并尝试使用 SSL 保护该连接有什么意义?

标签: c# ssl nginx https fiddler


【解决方案1】:

您无法阻止最终用户(使用您的应用程序的实际用户)读取通过 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 流量。
  • 再次提琴手将使用提琴手签名加密相同的 HTTP 流量 证书,即对于您的所有网站调用都将有提琴手签名 证书。

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

希望对你有帮助!

【讨论】:

    【解决方案2】:

    Fiddler 有能力进行中间人攻击(检查 HTTPS 数据包)。你会发现你已经信任了 fiddler 证书。您可以在名为 DO_NOT_TRUST_FiddlerRootTrusted Root 认证 中找到它。如果您删除此证书,您将收到不安全的连接错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多