我有一个用.Net Framework 2.0编写的Windows程序,可以与专有服务器应用程序通信。该服务器最近已更新为使用TLS1.2进行安全通信,而我的客户端程序无法再与其通信。
一次Google搜索显示了一些来源,这些信息表明TLS1.2仅受Window 7,Windows 2008 R2和更高版本的系统支持。这些消息来源是在谈论服务器,而不是客户端,但是除非我在Win7或更高版本上运行客户端,否则听起来还是很不走运-底层schannel.dll根本不支持TLS1.2协议。
所以我的问题是:
在较旧的Windows系统上运行时,是否可以让我的程序使用TLS1.2进行通信?
最佳答案
我怀疑您是否可以使用当前应用程序,而不在旧版本的Windows上提供TLS1.2(或TLS1.1)。 .Net Framework使用操作系统的基础schannel实现,并且没有对该库进行更新,并且对于支持TLS1.1或TLS1.2的Vista或更低版本,可能永远不会更新。
您可能会尝试使用其他SSL库,例如OpenSSL或NSS(由Firefox和Chrome使用),不受限制schannel的约束。在http://sourceforge.net/projects/openssl-net/处似乎有一个用于.NET的OpenSSL的接口,但这仅声称最多支持OpenSSL 1.0.0d,因此尚不支持TLS1.2(在OpenSSL 1.0.1中引入)。因此,也许无法通过.Net做到这一点。
可以做的另一件事是将服务器设置为不仅支持TLS1.2,而且支持TLS1.0。在大多数情况下,只要您使用正确的密码,这仍然可以提供足够的安全性(大多数服务器仅使用TLS1.0)。通常,这是服务器上支持多个TLS版本的简单设置,因此,如果可能,它将使用TLS1.2,但是如果客户端不支持TLS1.2,则降级到TLS1.0。
关于.net - 在旧版Windows系统上使用TLS1.2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24125379/