【问题标题】:Trying to run TLS1.2 on XP sp3 with .net 4.0尝试使用 .net 4.0 在 XP sp3 上运行 TLS1.2
【发布时间】:2024-05-01 18:55:02
【问题描述】:

在我们开始之前,我知道正确的做法是升级操作系统。我正在尝试解决这个问题,正如您可能想象的那样,有很多死胡同。我发现了一些似乎可行的方法,但我不清楚具体原因并寻求帮助。

Windows XP 不支持 SSL/TLS 1.1/1.2
Source 1
Source 2

.Net 4.0 不支持 TLS 1.2
Source 3

.Net 4.5+ 确实支持 TLS 1.2 但无法在 XP 上安装
Source 4 Source 5

如果您使用自己的证书覆盖 ServerCertificateValidationCallback 验证它的工作原理。为什么?到底是怎么回事?它真的有效吗?它的 似乎正在通过 SSL 进行通信。网络运营让我放心 服务器上没有备用 SSL/TLS。

替代方案:获取旧 TLS 1.0 的自签名证书,无法获取此 不再来自 CA
使用其他支持 TLS 1.2 的 C++ 库或类似库 并从 .NET 调用它

更新 1: 我仍然不知道为什么 ServerCertificateValidationCallback 似乎有效。现在我想看看 XP SP3 支持什么密码套件。我正在查看数据包并使用本文作为指南。正如所指出的,即使我找到了一个替代库,如果密码套件没有被提供或接受,我仍然没有解决方案。

cipher suite guide

我确实尝试了 SecureBlackBox 并取得了一些成功(是 TLS1.2),但我无法让它从证书颁发机构授权证书。 https://www.eldos.com/sbb/

更新 2:学习很多这是如何工作的 谢谢 Ullrich 先生等。人。

更新 3:此时我正在考虑在 XP 机器上使用 Apache 代理进行 TLS1.2 SHA256 CA 验证通信(非 Windows 堆栈),并让我的 .net 4.0 通信在本地与该代理通信(在机器上),而任何离开机器的通信都得到了适当的保护。

【问题讨论】:

  • 这很有帮助,谢谢。

标签: c# .net ssl https windows-xp


【解决方案1】:

证书和证书的验证与 TLS 版本无关。您可以将相同的证书与 SSL 3.0 ... TLS 1.3 一起使用。但仅仅因为您的证书可以与所有这些一起使用,并不能使您的本地 TLS 堆栈神奇地了解 TLS 1.2 协议的工作原理。

如果您希望 Windows XP 上的 TLS 1.2 支持,请查看 Windows TLS 堆栈之外的内容,即查看 OpenSSL、NSS 和其他库。看起来有一个库为 .NET 中最近的 OpenSSL 提供支持,但我不确定这是否仍然适用于 XP。见https://github.com/openssl-net/openssl-net

【讨论】:

  • 那么它是在通信 SSL/TLS 吗?如果是的话是什么版本?是 SHA256 吗?我的理解是,您可以购买 SHA256 证书,TLS 1.2 可以处理它,而 TLS 1.0 则不能。我错过了什么这些不相关的?我会看看你提到的链接,谢谢!
  • @JoeVolcano: " 我的理解是,您可以购买 SHA256 的证书,TLS 1.2 可以处理它,而 TLS 1.0 不能。" - 这种理解是错误的。同样,证书实际上独立于 TLS 版本。您也可以将 SHA-256 签名证书与 TLS 1.0 一起使用。任何限制仅取决于实际实现,而不取决于协议。
  • 所以我应该能够使用 SHA 256 的新证书并将我的服务器配置为除了 TLS 1.2 之外还允许 TLS 1.0,并且我可以与 .net 4.0(TLS 1.0 ) 在 xp service pack 3 上运行的模块?
  • @JoeVolcano:如果 TLS 堆栈不支持 TLS 1.2(即 Windows XP 上的 SChannel),那么使用理论上可以与 TLS 1.2 一起使用的证书也无济于事。
  • @JoeVolcano:在这种情况下,这可能根本不是 TLS 1.0 与 TLS 1.2 的问题,而是缺少Server Name Indication 的问题,即服务器确实使用 TLS 1.0(XP 支持)但确实需要 SNI(可能不支持)并且在没有 SNI 的情况下访问时会为您提供错误的证书。
最近更新 更多