.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 |
关闭 |
关闭 |
在上 |
在上 |
在上 |
在上 |
在上 |
在上 |
TLS 系统默认版本.NET Framework 3.5.1 Windows 7 SP1 和 Server 2008 R2 SP1 中包含的支持