winXP上的https请求错误

https request error on winXP

我有一个使用 Web 服务的 C# 控制台应用程序(public 政府的 Web 服务)。为此,我在我的 C# 项目中添加了一个 Web 服务参考,调用了适当的方法,一切正常。除了在一台电脑上。

这是一台 Windows XP SP2 PC,我安装了 .net framework 4(这是我的应用程序的目标框架)。当我在这里调用相同的命令行工具时,我总是会收到一条错误消息。 100% 具有相同参数的相同工具在所有其他客户端(Windows 7、Windows 8、Windows 8.1,甚至其他 Windows XP 机器)上都能正常工作!?! ?!?

错误信息:

Unhandled Exception: System.ServiceModel.CommunicationException: An error occurred while making the HTTP request to https://adress.com/services/TheServiceWSI.

This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Received an unexpected EOF or 0 bytes from the transport stream.

我试过了:

但没有成功...

有谁知道这里的问题是什么?

提前致谢!

以下是一些您可以很快研究的简单可能性:

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

TL;DR;确保您的 XP 安装已完全打上 SP3 补丁和所有安全补丁。修复了很多 SSL/TLS 个漏洞。

我知道这个问题,它可能与 BEAST 漏洞缓解有关(尽管也可能是其他答案中提到的其他漏洞补丁之一)。在 Apple 对 Mavericks 实施了缓解措施后,我在与较旧的 Windows 服务交谈时遇到了类似的错误。原因与数据包的碎片化方式有关,这会在不完全遵循规范的实现中触发错误(显然微软之前没有,但现在是)。

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

如果您可以控制服务器,您可以尝试 disable the BEAST mitigation。根据 post,XP SP3 应该 可以与 BEAST 缓解一起使用,因此它可能更具有学术意义。在生产环境中禁用与安全相关的修复可能并不明智。

您可能已经知道,Windows XP 早已结束扩展支持,并且已经有一年多没有安全补丁了。