简体   繁体   English

在旧版Windows系统上使用TLS1.2

[英]Using TLS1.2 on older Windows system

I have a Windows program written in .Net Framework 2.0 that communicates to a proprietary server app. 我有一个用.Net Framework 2.0编写的Windows程序,可以与专有服务器应用程序通信。 The server was recently updated to use TLS1.2 for secure communication and my client program can't talk to it any more. 该服务器最近已更新为使用TLS1.2进行安全通信,而我的客户端程序无法再与其通信。

A google search turned up several sources that indicate that TLS1.2 is only supported by Window 7, Windows 2008 R2, and later systems. 一次Google搜索显示了一些来源,这些信息表明TLS1.2仅受Window 7,Windows 2008 R2和更高版本的系统支持。 These sources are talking about servers, not clients, but it still sounds like I'm out of luck unless I run my client on Win7 or later - the underlying schannel.dll simply doesn't support the TLS1.2 protocol. 这些消息来源是在谈论服务器,而不是客户端,但是除非我在Win7或更高版本上运行客户端,否则听起来还是很不走运-底层schannel.dll根本不支持TLS1.2协议。

So my question is: 所以我的问题是:

Is there a way to get my program to communicate using TLS1.2 when running on older Windows systems? 在较旧的Windows系统上运行时,是否可以让我的程序使用TLS1.2进行通信?

I doubt that you can use your current application unchanged to provide TLS1.2 (or TLS1.1) on older versions of windows. 我怀疑您是否可以使用当前应用程序,而不在旧版本的Windows上提供TLS1.2(或TLS1.1)。 The .Net Framework uses the underlying schannel implementation of the operating system, and there is no update to this library and probably never will be for Vista or lower which support TLS1.1 or TLS1.2. .Net Framework使用操作系统的基础schannel实现,并且没有对该库进行更新,并且对于支持TLS1.1或TLS1.2的Vista或更低版本,可能永远不会更新。

You might try to use different SSL libraries, eg OpenSSL or NSS (used by Firefox and Chrome), which are not bound by the limits schannel. 您可能会尝试使用不受限制schannel约束的其他SSL库,例如OpenSSL或NSS(由Firefox和Chrome使用)。 There seem to be an interface for OpenSSL for .NET at http://sourceforge.net/projects/openssl-net/ , but this claims only to support up to OpenSSL 1.0.0d and thus does not support TLS1.2 yet (introduced in OpenSSL 1.0.1). http://sourceforge.net/projects/openssl-net/上似乎有一个适用于.NET的OpenSSL接口,但这仅声称支持OpenSSL 1.0.0d,因此尚不支持TLS1.2(已引入在OpenSSL 1.0.1中)。 So maybe there is no way in doing this with .Net. 因此,也许无法通过.Net做到这一点。

Another thing which could be done is to setup the server to not only suport TLS1.2 but also TLS1.0. 可以做的另一件事是将服务器设置为不仅支持TLS1.2,而且支持TLS1.0。 This still provides enough security in most cases (most servers out there use only TLS1.0), provided you use the right ciphers. 在大多数情况下,只要您使用正确的密码,这仍然可以提供足够的安全性(大多数服务器仅使用TLS1.0)。 Usually it is a simple setting on the server to support multiple TLS versions, so that it will talk TLS1.2 if possible but downgrade to TLS1.0 if the client does not support TLS1.2. 通常,这是服务器上支持多个TLS版本的简单设置,因此,如果可能,它将使用TLS1.2,但是如果客户端不支持TLS1.2,则降级到TLS1.0。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM