Microsoft SQL Server 支持 TLS 1.2

适用于: SQL Server 2008 DeveloperSQL Server 2008 EnterpriseSQL Server 2008 Express

简介


本文提供了有关启用 SQL Server 2017 窗口、 SQL Server 2016年、 SQL Server 2008年,SQL Server 2008 R2、 SQL Server 2012 年和 2014 SQL Server 上的 TLS 1.2 支持,Microsoft 将发布更新的信息。本文还列出了受支持的客户端提供程序。

几个已知的与 SSL 和早期版本中的传输层安全 (TLS) 中报告了漏洞。我们建议您升级到 TLS 1.2 进行安全通信。

重要的不知道 Microsoft TDS 实现已报告漏洞。这是使用 SQL Server 客户端和 SQL Server 数据库引擎之间的通信协议。TLS 1.0 (关于这篇文章发布日期已报告给 Microsoft 的已知漏洞) 的 Microsoft Schannel 实现是 TLS 1.0 的 Windows 安全状态更新中的频道实现中的摘要:于 2015 年 11 月 24 日

如何知道是否需要此更新


使用下表来确定您当前的 SQL Server 版本是否已具有支持 TLS 1.2 或您是否要下载的更新以支持 TLS 1.2。使用表中的下载链接,以获取适用于您的环境的服务器更新。

注意:是晚于此表中列出的那些也支持 TLS 1.2 的生成。

SQL Server 版本 初始版本/发行版支持 TLS 1.2 当前使用 TLS 1.2 支持更新 其他信息

SQL Server 2014 SP1 CU

12.0.4439.1

SP1 CU5

KB3130926-用于 SQL Server 2014 SP1 的累积更新 5

注意:KB3130926 现在会安装最后一个产生 2014 sp1 的 CU (CU13- KB4019099 ),其中包含 TLS 1.2 支持,以及迄今发布的所有修复程序。如果需要请在用 CU5 Windows Update 目录。

注意:TLS 1.2 支持还有2014 SP22014 SP3中。

KB3052404 -修复: 不能使用传输层安全性协议 1.2 版连接到一台服务器正在运行 SQL Server 2014年或 SQL Server 2012年

SQL Server SP1 GDR 2014

12.0.4219.0

SP1 GDR TLS 1.2 更新

TLS 2014 SP1 GDR 1.2 支持可用于最新累积 GDR 更新 – KB4019091

注意:TLS 1.2 支持还有2014 SP22014 SP3中。

 

SQL Server 2014 RTM CU

12.0.2564.0

RTM CU12

KB3130923-用于 SQL Server 2014年累积更新 12

注意:KB3130923 现在将安装最后一个CU 2014 RTM (CU14- KB3158271 ),包含 TLS 1.2 支持,以及迄今发布的所有修补程序的发布。如果需要 CU12 可在Windows Update 目录中。

注意:TLS 1.2 支持还有2014 SP22014 SP3中。

KB3052404 -修复: 不能使用传输层安全性协议 1.2 版连接到一台服务器正在运行 SQL Server 2014年或 SQL Server 2012年

SQL Server 2014 RTM GDR

12.0.2271.0

RTM GDR TLS 1.2 更新

对 SQL 2014 RTM 的 TLS 支持目前只提供通过安装2014 SP22014 SP3.

 

SQL Server 2012 SP3 GDR

11.0.6216.27

SP3 GDR TLS 1.2 更新

TLS 1.2 支持 2012 SP3 GDR 有最新累积 GDR 更新 – KB4057115

注意:TLS 1.2 支持还有2012 SP4中。

 

SQL Server 2012 SP3 CU

11.0.6518.0

SP1 CU3

KB3123299-用于 SQL Server 2012 SP3 的累积更新 1

注意:现在安装最后一个发布 2012 SP3 的 CU KB3123299 (CU10- KB4025925,其中包含 TLS 1.2 支持,以及迄今发布的所有修补程序)。如果需要 CU1 可在Windows Update 目录中。

注意:TLS 1.2 支持还有2012 SP4中。

KB3052404 -修复: 不能使用传输层安全性协议 1.2 版连接到一台服务器正在运行 SQL Server 2014年或 SQL Server 2012年

SQL Server 2012 SP2 GDR

11.0.5352.0

SP2 GDR TLS 1.2 更新

TLS 1.2 支持 2012 SP2 GDR 有最新累积 GDR 更新 – KB3194719

TLS 1.2 支持还有2012 SP32012 SP4中。

 

SQL Server 2012 SP2 CU

11.0.5644.2

SP2 CU10

KB3120313-累积更新 SQL Server 2012 sp2 10

注意:现在安装最后一个发布 2012 SP2 的 CU KB3120313 (CU16- KB3205054,其中包含 TLS 1.2 支持,以及迄今发布的所有修补程序)。如果需要 CU1 可在Windows Update 目录中。

注意:TLS 1.2 支持还有2012 SP32012 SP4中。

KB3052404 -修复: 不能使用传输层安全性协议 1.2 版连接到一台服务器正在运行 SQL Server 2014年或 SQL Server 2012年

SQL Server 2008 R2 SP3 (只有 x86/x64)

10.50.6542.0

SP3 TLS 1.2 更新

在 SQL Server 2008 R2 sp3 – KB4057113累积更新提供了 TLS 1.2 支持。

 

SQL Server 2008 R2 SP2 GDR (仅 IA-64)

10.50.4047.0

SP2 TLS 1.2 更新

SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2 更新

 

SQL Server 2008 R2 SP2 CU (仅 IA-64)

10.50.4344.0

SP2 TLS 1.2 更新

SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2 更新

 

SQL Server 2008 SP4

(只有 x86/x64)

10.0.6547.0

SP4 TLS 1.2 更新

在 SQL Server 2008 sp4 KB4057114累积更新提供了 TLS 1.2 支持。(只有 x86/x64)

 

SQL Server 2008 SP3 GDR (仅 IA-64)

10.0.5545.0

SP3 TLS 1.2 更新

SQL Server 2008 SP3 GDR (IA-64) TLS 1.2 更新

 

SQL Server 2008 SP3 CU (仅 IA-64)

10.0.5896.0

SP3 TLS 1.2 更新

SQL Server 2008 SP3 CU (IA-64) TLS 1.2 更新

 

 

下载客户端组件

使用下表来下载的客户端组件和驱动程序更新适用于您的环境。

客户端组件 /driver

使用 TLS 1.2 支持更新

SQL Server 本机客户端 SQL Server 2008年和 SQL Server 2008 R2 (x64/x86/IA64)

Microsoft SQL Server 2008年和 SQL Server 2008 R2 的本机客户端

SQL Server 本机客户端 (对于 SQL Server 2012年/2014年/2016年/2017)

(x86/x64)

Microsoft SQL Server 2012年本机客户端-QFE

其他修补程序所需的 SQL Server 使用 TLS 1.2


您必须安装以下.NET 修补程序汇总启用 SQL Server 功能,如数据库邮件和使用.NET 终结点需要 TLS 1.2 某些 SSIS 组件支持 Web 服务任务使用 TLS 1.2 等。

操作系统 .NET Framework 版本 使用 TLS 1.2 支持更新
Windows 7 Service Pack 1,Windows 2008 R2 Service Pack 1 3.5.1 对.NET Framework 3.5.1 版中包含 TLS v1.2 支持
RTM windows 8,Windows 2012 RTM 3.5 英寸 在.NET Framework 3.5 版包含 TLS v1.2 支持
Windows 8.1,Windows 2012 R2 SP1 3.5 SP1 TLS v1.2 包括在.NET Framework 3.5 SP1 版 Windows 8.1 和 Windows Server 2012 R2 上的支持

常见问题


在 SQL Server 2016年支持 TLS 1.1 吗?

是的。SQL Server 2016年和 SQL Server 版本的 Windows 上的 2017年附带于 TLS 1.2 支持 TLS 1.0。您必须禁用 TLS 1.0 和 1.1 中,如果您想要使用的客户端-服务器通信仅 TLS 1.2。

TDS 受已知安全漏洞的影响?

没有已知的 Microsoft TDS 实现已报告漏洞。因为几个标准实施组织都要求 TLS 1.2 用于加密的通讯通道,Microsoft 将发布 TLS 1.2 为基础广泛的 SQL Server 安装的支持。

如何将 TLS 1.2 更新分发给客户?

本文提供的下载链接的相应的服务器和客户机更新的支持 TLS 1.2。

将为 TLS 1.2 支持 SQL Server 2005?

TLS 1.2 支持将提供仅用于 SQL Server 2008年及更高版本。

如果在服务器上禁用了 SSL 3.0 和 TLS 1.0,是不使用 SSL/TLS 受影响的客户?

是的。SQL Server 加密的用户名和密码登录期间即使未使用安全的通信信道。此更新是必需的没有使用安全的通信,并具有除 TLS 1.2 服务器上禁用所有其他协议的所有 SQL Server 实例。

哪个版本的 Windows Server 支持 TLS 1.2?

Windows Server 2008 R2 及更高版本支持 TLS 1.2。

要为 SQL Server 通讯启用 TLS 1.2 正确的注册表设置是什么?正确的注册表设置如下所示:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001  

这些设置所需的服务器和客户端计算机。DisabledByDefault 和启用设置所需在 Windows 7 的客户机和 Windows Server 2008 R2 服务器上创建。在 Windows 8 和更高版本的客户端操作系统或 Windows Server 2012 服务器和更高版本的服务器操作系统的系统上,应已启用 TLS 1.2。如果您在 Windows 注册表中需要独立于操作系统版本为实施部署策略,我们建议将上面提到的注册表项添加到策略。

已知问题


问题 1

之后您应用此修复程序的 SQL Server 2008 中,2008 R2,2012 年或 2014年,ISQL 服务器管理 Studio (SSMS)、 报表服务器和报表管理器未连接到数据库引擎。报表服务器和报表管理器失败,并返回以下错误消息:

报表服务器不能打开到报表服务器数据库的连接。与数据库的连接都需要所有请求和处理。(rsReportServerDatabaseUnavailable)

此问题是因为 SSMS、 报表管理器和报告服务配置管理器使用 ADO.NET,并且仅适用于.NET Framework 4.6 ADO.NET 支持 TLS 1.2。对于.NET Framework 的早期版本,您必须应用 Windows 更新,以便 ADO.NET 可以为客户端支持 TLS 1.2 通信。在早期版本的.NET 框架支持 TLS 1.2 的 Windows 更新"如何知道是否需要此更新"部分中的表中列出。

问题 2

即使客户端提供程序已更新为支持 TLS 1.2 版本报告服务配置管理器报告以下错误消息:

无法连接到服务器: 已成功建立连接到服务器,但在登录前的握手过程中发生错误。

Error message

要解决此问题,请手动创建下面的注册表项承载报告服务配置管理器的系统上: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client:"已启用"= dword:00000001

问题 3

使用 TLS 1.2 加密终结点通信失败时的可用性组或数据库镜像或在 SQL Server 中的服务中介程序中使用加密的通信。在 SQL 错误日志中记录类似于以下内容的错误消息:

连接握手失败。OS 调用的操作失败: (80090331) 0x80090331 (客户端和服务器无法通信,因为它们不具备常见算法。)。56 的状态。

有关此问题的详细信息,请参阅修复: 与 TLS 1.2 的加密终结点通信失败时使用 SQL Server

问题 4

当您尝试在已启用 TLS 1.2 的服务器上安装 SQL Server 2012年或 SQL Server 2014年时可能发生各种错误。

有关详细信息,请参阅修复: 在已启用 TLS 1.2 的服务器上安装 SQL Server 2012年或 SQL Server 2014年时出现错误

问题 5

数据库镜像或可用性组加密的连接不工作时禁用所有其他协议除 TLS 1.2 后使用的证书。在 SQL Server 错误日志中记录类似于以下内容的错误消息:

数据库镜像或可用性组加密的连接不工作时禁用所有其他协议除 TLS 1.2 后使用的证书。您可能会注意到下列症状之一:

症状 1:

在 SQL Server 错误日志中记录类似于以下内容的错误消息:

连接握手失败。OS 调用的操作失败: (80090331) 0x80090331 (客户端和服务器无法通信,因为它们不具备常见算法。)。58 状态。

现象 2:

在 Windows 事件日志中记录类似于以下内容的错误消息:

登录名称: 系统来源: 频道日期: < 日期时间 >事件 ID: 36888任务类别: 无级别: 错误关键字:    用户: 系统计算机:--说明:严重警报已生成并发送到远程终结点。这可能会导致连接终止。TLS 协议定义的错误代码为 40。Windows SChannel 错误状态是 1205年。登录名称: 系统来源: 频道日期: < 日期时间 >事件 ID: 36874任务类别: 无级别: 错误关键字:    用户: 系统计算机:--说明:从远程客户端应用程序,收到一个 TLS 1.2 连接请求,但客户端应用程序支持的密码套件没有一个受服务器。SSL 连接请求失败。

出现此问题是因为可用性组和数据库镜像需要证书不使用固定长度如 MD5 哈希算法。固定的长度的哈希算法不支持 TLS 1.2。

有关详细信息,请参阅修复: 通信使用的 MD5 哈希算法失败时,如果 SQL Server 使用 TLS 1.2

问题 6

在知识文库文章3146034中报告间歇性服务终止问题会影响以下 SQL Server 数据库引擎版本。为了保护自己免受服务终止问题的客户,我们建议它们为如果下表中列出其 SQL Server 版本,本文中提到的 Microsoft SQL Server 安装的 TLS 1.2 更新。

SQL Server 版本 受影响的版本
SQL Server 2008 R2 SP3 (x 86 和 x64) 10.50.6537.0
SQL Server 2008 R2 SP2 GDR (仅 IA-64) 10.50.4046.0
SQL Server 2008 R2 SP2 (仅 IA-64) 10.50.4343.0
SQL Server 2008 SP4 (x 86 和 x64) 10.0.6543.0
SQL Server 2008 SP3 GDR (仅 IA-64) 10.0.5544.0
SQL Server 2008 SP3 (仅 IA-64) 10.0.5894.0

问题 7

数据库邮件并不适用于 TLS 1.2。数据库邮件失败时出现以下错误:

Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException:无法从数据库中读取邮件配置信息。无法启动邮件会话。

有关其他信息请参阅本文中其他修补程序所需的 SQL Server 使用 TLS 1.2节。

客户端或服务器上缺少 TLS 1.2 更新时可能会遇到的常见错误

问题 1

在 SQL Server 上启用 TLS 1.2 协议后,系统中心配置管理器 (SCCM) 不能连接到 SQL Server。在此情况下,您将收到以下错误消息:

TCP 提供程序: 远程主机强行关闭现有连接

在 SCCM 使用 SQL Server 本机客户端驱动程序未安装修补程序时,可能发生此问题。要解决此问题,请下载并安装本文的客户端组件的下载部分中列出的本机客户端修复程序。例如: Microsoft® SQL Server® 2012年本机客户端的 QFE

若要了解哪个驱动程序使用 SCCM 连接到 SQL Server 时查看 SCCM 日志,如以下示例所示:

[SQL Server Native Client 11.0]TCP Provider: An existing connection was forcibly closed by the remote host.~~  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> *** [08001][10054][Microsoft][SQL Server Native Client 11.0]Client unable to establish connection  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> *** Failed to connect to the SQL Server, connection type: SMS ACCESS.  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> INFO: SQL Connection failed. Connection: SMS ACCESS, Type: Secure  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>Native Client 11.0]TCP Provider: An existing connection was forcibly closed by the remote host.~~  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> *** [08001][10054][Microsoft][SQL Server Native Client 11.0]Client unable to establish connection  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> *** Failed to connect to the SQL Server, connection type: SMS ACCESS.  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)> INFO: SQL Connection failed. Connection: SMS ACCESS, Type: Secure  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>