TLS 系统默认版本.NET Framework 3.5.1 Windows 7 SP1 和 Server 2008 R2 SP1 中包含的支持
.NET framework 3.5.1 版及更早版本未提供应用程序可以使用传输层安全性 (TLS) 系统默认版本作为加密协议的支持。 此更新能够在.NET Framework 3.5.1 TLS v1.2 使用。
注意 此内容已推出 Windows 更新。 若要获取内容,扫描获得最新的.NET Framework 更新 Windows 更新。 如果您的系统是完全更新通过 Windows 更新,则不需要采取进一步的措施。
解决方案
下载信息
下面是一些可以从 Microsoft 下载中心下载: 下载基于 x86 的软件包。
下载基于 x64 的软件包。
下载基于 IA64 的软件包。在这方面,我们做了以下改进:
-
可以将以下注册表项设置为使用 SSL 和 TLS 的操作系统默认值,而不是在计算机上运行的托管应用程序的硬编码 .NET Framework 默认值。
-
对于 64 位操作系统:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001
-
对于 32 位操作系统:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001
注意如果应用程序已设置ServicePointManager.SecureProtocol ,在代码中或通过配置文件复制到特定值,或使用SslStream.AuthenticateAs* Api 指定特定的SslProtocols枚举注册表设置未出现问题。
-
-
此外,我们还增加了可以用作一个选项用于设置 TLS v1.2、 TLS 1.1 版,以及操作系统的ServicePointManager.SecurityProtocol属性的默认值时以.NET 为目标的SslProtocolsExtensions枚举框架版本 2.0 SP2。 (请参阅开发人员指南部分中的信息如何使用扩展。)注意:Windows Vista SP2 和 Windows Server 2008 SP2 不支持传输层安全 (TLS) 协议版本比 1.0。 管理运行 Windows Vista SP2 或 Windows Server 2008 SP2 上的.NET Framework 2.0 SP2 应用程序不能使用 TLS 1.2 或 TLS 1.1,即使这些协议在ServicePointManager.SecurityProtocol属性中设置。
有关如何下载 Microsoft 支持文件的更多信息,请单击以下文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从联机服务获取 Microsoft 支持文件 Microsoft 已对该文件进行病毒扫描。 Microsoft 使用的是文件发布时可以获得的最新病毒检测软件。 该文件存储在安全性得到增强的服务器上,以防止对文件进行未经授权的更改。
开发人员指南
新扩展的定义是在以下文件中:
-
SecurityProtocolTypeExtensions.csnamespace System.Net{using System.Security.Authentication;public static class SecurityProtocolTypeExtensions{public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;public const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11;public const SecurityProtocolType SystemDefault = (SecurityProtocolType)0;}}
-
SslProtocolsExtensions.csnamespace System.Security.Authentication{public static class SslProtocolsExtensions{public const SslProtocols Tls12 = (SslProtocols)0x00000C00;public const SslProtocols Tls11 = (SslProtocols)0x00000300;}}
以支持 TLS v1.2,源代码文件包括在项目中,,然后将协议版本使用下列方法:
-
使用 ServicePointManager 基于 Api 的应用程序可以设置协议通过使用 following:System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
-
应用程序使用的SslStream AuthenticateAsClient (字符串,X509CertificateCollection,SslProtocols,布尔值)重载可以将SslProtocols值设置为SslProtocolsExtensions.Tls12.
如果设置在第一段中提到的注册表设置,并将SslProtocols值设置为SslProtocols.None应用程序中,选择系统默认行为将取决于 Windows 的版本。此外,当您更改应用程序代码来启用 TLS v1.2 使用.NET Framework 3.5 SP1 的支持,应确保您解决在不部署此修补程序的计算机上的以下异常:
-
如果没有安装此修补程序, ServicePointManager-基于的 Api (HTTP、 FTP SMTP) 将引发"System.NotSupportedException: 不支持请求的安全协议"当应用程序调用ServicePointManager.SecurityProtocol设置的新值。
-
如果没有安装此修补程序, SslStream-基于的 Api 将在它们的 AuthenticateAs * Api 调用时引发异常:
System.ArgumentException: 指定的值无效是 SslProtocolType 枚举中的。参数名称: sslProtocolType
注意对于SslStream , Tls12,与任何现有的Tls, Ssl3, Ssl2 Tls11的组合 (例如: Tls12 |Tls11 |Tls) 将以静默方式降至现有的协议 (例如: Tls) 没有此修补程序的系统上。 它将连接到 Tls 而不引发异常。
更多信息
要启用 TLS 1.1 版或 v1.2 为操作系统的默认值,请按照在指导https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12.注意 TLS 1.1 版和 v1.2 不可用在 Windows Vista 或 Windows 服务器 2008.If,您必须禁用操作系统默认设置所设置的"解决方案"一节中提到对于特定的应用程序,你可以通过添加注册表项以下注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions<<Full path of the .exe for the file>> DWORD 0C:\MyApp\MyApp.exe DWORD 0
TLS v1.2 有关详细信息,请参阅介绍 TLS v1.2。启用SystemDefaultTlsVersions .NET 注册表项后,不同的行为发生的每个版本的 Windows 中,如下表中所示。
Windows 版本 |
SSL2 客户端 |
SSL2 服务器 |
SSL3 客户端 |
SSL3 服务器 |
TLS 1.0 客户端 |
TLS 1.0 服务器 |
TLS 1.1 客户端 |
TLS 1.1 服务器 |
1.2 TLS 客户端 |
1.2 TLS 服务器 |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 和 Windows Server 2008 SP2 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 和 Windows Server 2008 R2 SP1 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
关闭 |
关闭 |
关闭 |
关闭 |
Windows Server 2012 |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
Windows 8.1 和 Windows Server 2012 R2 |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
Windows 10 |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
Windows 10 (1511) |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
Windows 10 (1607) 和 Windows 服务器 2016年 |
N/A |
N/A |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |