【问题标题】:Fiddler https error: "because they do not possess a common algorithm"Fiddler https 错误:“因为它们没有通用算法”
【发布时间】:2013-07-11 13:53:54
【问题描述】:

我正在尝试使用 Fiddler 监控 https 流量,使用当前最新版本:2.4.4.5

我已成功设置 https、证书,并且可以看到完整的 https 加密流量,例如浏览我的银行网站。

...然而...

当我尝试监控其他服务器时,我在响应窗口中收到此错误消息:

“无法保护 77.87.178.160 的现有连接。对 SSPI 的调用失败,请参阅内部异常。InnerException: System.ComponentModel.Win32Exception: 客户端和服务器无法通信,因为它们没有通用算法”

完整的 Fiddler 窗口见:

在这种情况下,客户端不是浏览器,而是自定义客户端程序,它与自己的服务器通信。

我的问题:这个异常是否具有误导性,实际上是其他一些错误阻止了安全通道的设置? ...要么... 我们还有机会监控这个 https 通信吗?

提前谢谢

【问题讨论】:

    标签: ssl https fiddler


    【解决方案1】:

    什么是客户端程序?

    此错误通常表明客户端应用程序仅提供某些 HTTPS 密码,而 Fiddler 不支持这些密码。

    但是,在这种情况下,这里的具体问题几乎可以肯定是这样的:http://blogs.msdn.com/b/ieinternals/archive/2009/12/08/aes-is-not-a-valid-cipher-for-sslv3.aspx

    客户端正在尝试将 AES 与 SSLv3 一起使用,但这不是 SSL3 的有效密码之一。结果,连接失败。

    可能可以通过单击“规则”>“自定义规则”来解决此问题。向下滚动到 Main() 函数并在函数中添加以下行:

      CONFIG.oAcceptedServerHTTPSProtocols = 
        System.Security.Authentication.SslProtocols.Ssl3;
    

    如果可行,请告诉我。

    注意当前版本的 Fiddler 为此提供了一个 UI 链接:查看 HTTPS 选项卡上启用的协议列表。

    【讨论】:

    • 埃里克,非常感谢您的支持。不幸的是,这给了我“尚未声明变量 'SslProtocols'”
    • 我使用 System.Security.Authentication 命名空间解决了编译错误。现在我得到 0 长度响应和此错误消息:“fiddler.network.https> 无法保护 77.87.178.129 的现有连接。无法从传输连接中读取数据:现有连接被远程主机强行关闭。InnerException: System.Net.Sockets.SocketException:现有连接被远程主机在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 处强行关闭”有趣的是,在注释掉这一行之后,现在给出了一样。
    • 尝试将线路更改为only Ssl3(上面更新了答案)。我可以使用该配置从这里成功连接到目标服务器。
    • 这对我有用。非常感谢,因为我一直在努力解决这个问题。
    【解决方案2】:

    是的,我在 fiddler 之外工作时也看到了这个错误,它与 AuthenticateAsServer 连接,但仅在使用 IE10 而不是 Chrome 作为浏览器时出错。

    奇怪的是,对于使用 SslProtocols.Tls 协议的 IE10,它并没有一直中断,所以如果失败,我将添加一些代码来切换协议

    如果您使用像 Fiddler 这样的代理服务器或通过主机文件劫持 DNS 以将流量转移到服务器来使用不可见的服务器,那么可以使用的协议似乎也会发生变化

    【讨论】:

      【解决方案3】:

      令人难以置信的是,这个问题在 6 年后仍然存在。 刚刚安装了最新版本的 Fiddle (v5.0.20194.41348),果然在 Win7 上使用 Chrome 或 IE 时它一直失败并出现可怕的错误:

      “fiddler.network.https> 与 google.com 的 HTTPS 握手(对于 #1)失败。System.ComponentModel.Win32Exception 客户端和服务器无法通信,因为它们没有共同的算法”

      经过几个小时的测试,我找到了一个似乎适用于几乎所有网站的中间解决方案。目的是在日志中没有错误的情况下获得尽可能高的安全性。无需添加任何代码,只需在 Tools > Options > HTTPS > Protocols 下更改此行对我有用(只需复制并粘贴即可):

      <client>;ssl3;tls1.1;tls1.2
      

      基本上删除了 ssl2 和 tls1.0 协议,这给我们留下了一些相当不错的安全性并且到目前为止没有错误。花了几个小时对这个错误感到沮丧,希望那里的人可能会发现这很有用,非常感谢 EricLaw,他发现了问题的根源。

      【讨论】:

      • SSL3 已被弃用多年且不被认为是安全的,如果您的目标是安全,我也会将其从列表中删除。特别是它容易受到 POODLE 和 BEAST 漏洞的影响。我相信 TLS 1.1 也将很快被弃用。
      • 感谢您提供的信息,但就我而言,我只是在寻找一种方法使其仅用于测试目的。 ;)
      猜你喜欢
      • 2020-05-09
      • 2018-10-16
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      相关资源
      最近更新 更多