在winXP https请求错误

我有ac#控制台应用程序,它消耗了一个web服务(一个政府的公共web服务)。 要做到这一点,我在我的C#项目中添加了一个Web服务引用,调用适当的方法,一切工作正常。 除了在一台PC上。

这是一个Windows XP SP2电脑,我安装了.NET Framework 4(这是我的应用程序的目标框架)。 当我在这里调用相同的命令行工具时,我总是得到一个错误信息。 100%的百分比,相同参数的工具在其他所有客户端(Windows 7,Windows 8,Windows 8.1,甚至其他Windows XP计算机)上都能正常工作。

错误信息:

未处理的exception:System.ServiceModel.CommunicationException:将HTTP请求发送到https://adress.com/services/TheServiceWSI时发生错误。

这可能是由于在HTTPS情况下服务器证书未正确configurationHTTP.SYS。 这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。 —> System.Net.WebException:底层连接已closures:发送时发生意外错误。 —> System.IO.IOException:从传输stream中收到一个意外的EOF或0字节。

我试过了:

  • 停用防火墙
  • 重新安装.net framwork 4
  • 停用antvir软件
  • 安装所有的Windows更新

但没有成功…

有没有人有一个想法可能是这里的问题?

提前致谢!

TL; DR; 确保您的XP安装完全通过SP3和所有安全补丁修补。 很多SSL / TLS漏洞被修补。

我认识到这个问题,它可能与BEAST漏洞缓解有关(尽管也可能是其他答案中提到的其他漏洞补丁之一)。 苹果公司在小牛队实施了缓解措施之后,在与旧的Windows服务交流时也遇到了类似的错误。 原因是数据包是如何被分割的,这在实际上并没有严格遵循规范的情况下触发了错误(显然,微软并没有早些这样做,但现在已经是这样)。

无论哪种方式,你需要放弃SP2,并确保你运行SP3。

如果您可以控制服务器,则可以尝试禁用BEAST缓解 。 根据那个帖子,XP SP3 应该和BEAST的缓解一起工作,所以它可能更多的是学术上的兴趣。 在生产环境中禁用与安全相关的修补程序可能不明智。

正如您可能已经意识到的那样,Windows XP早已超过了扩展支持的范围,并在一年之内没有安全补丁。

这里有几个简单的可能性,你可以很快看到:

  1. 该问题指出该机器正在使用XP SP2,但所有Windows更新都已应用。 是在SP2或SP3的工作XP机器? .NET 4.0被设计为在SP3上运行,所以如果可能的话在你的环境中,如果你还没有这样做的话,这将是一个审慎的更新,原因很多。
  2. 由于去年年底的POODLE漏洞,很多服务器都放弃了对SSL 3.0(或更低版本)的支持,现在需要TLS 1.0或更高版本。 您可能需要检查控制面板/ Internet属性/高级/安全,以查看在有问题的机器上安装并启用的SSL版本列表,并确保已安装并检查TLS 1.0。
  3. 检查有问题的机器上的系统时间是否与其他机器大致相同(即不会太多)。