我有一个用.Net Framework 2.0编写的Windows程序,它与专有服务器应用程序通信。服务器最近更新为使用TLS1.2进行安全通信,我的客户端程序无法再与它通信。
谷歌搜索发现了几个来源,表明只有Window 7,Windows 2008 R2和更高版本系统支持TLS1.2。这些消息来源是谈论服务器,而不是客户端,但听起来我运气不好,除非我在Win7或更高版本上运行我的客户端 - 底层的schannel.dll根本不支持TLS1.2协议。
所以我的问题是:
在较旧的Windows系统上运行时,有没有办法让我的程序使用TLS1.2进行通信?
答案 0 :(得分:0)
我怀疑你可以使用当前的应用程序不变来在旧版本的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/有一个OpenSSL for .NET的接口,但这只声称支持OpenSSL 1.0.0d,因此还不支持TLS1.2(在OpenSSL 1.0.1中引入)。所以也许没有办法用.Net做到这一点。
可以做的另一件事是将服务器设置为不仅支持TLS1.2而且支持TLS1.0。如果您使用正确的密码,这在大多数情况下仍然提供足够的安全性(大多数服务器只使用TLS1.0)。通常,它是服务器上的一个简单设置,支持多个TLS版本,因此如果可能,它将与TLS1.2通信,但如果客户端不支持TLS1.2,则降级到TLS1.0。