在开始之前,我知道正确的做法是升级操作系统。我正在尝试解决这个问题,正如你所想象的那样,有很多死路。我找到了一些似乎有效的东西,但我不清楚具体原因,并寻求帮助。
Windows XP不支持SSL/TLS 1.1/1.2
来源1
来源2
.Net 4.0不支持TLS 1.2
来源3
.Net 4.5+支持TLS 1.2,但无法安装在XP系统上。
来源4 来源5
如果您使用自己的证书验证来覆盖ServerCertificateValidationCallback,则可以正常工作。为什么?发生了什么? 它似乎通过SSL进行通信。网络操作向我保证服务器上没有回退SSL / TLS。
替代方法:获取适用于旧版TLS 1.0的自签名证书,无法从CA获得此证书。
使用其他支持TLS 1.2的C++库或类似产品,并从.NET中调用它。
更新1: 我仍然不知道为什么ServerCertificateValidationCallback似乎有效。现在我正在查看特定于XP SP3的Cipher Suite支持情况。 我正在查看数据包并使用这篇文章作为指南。正如所指出的那样,即使我找到另一种可行的库,如果未提供或接受Cipher Suite,则仍无法解决问题。
我尝试使用SecureBlackBox,取得了一定的成功(使用了TLS1.2),但我无法让它授权证书颁发机构的证书。 https://www.eldos.com/sbb/
更新2:我正在学习这个工作原理,感谢Ullrich先生等人。
更新3:目前,我正在考虑在XP机器上使用Apache代理进行TLS1.2 SHA256 CA验证通信(非Windows堆栈),并使我的.NET 4.0通信在本地与此代理通信,而离开该机器的任何通信都得到适当的安全保障。