SQL Server与新TLS标准的兼容性


30
  • 主要的浏览器正在超越SSL3.0和TLS1.0。
  • PCI安全委员会宣布这些协议的有效期限已被视为足够强大的加密。

我们需要远离这些协议,而使用更新更强大的协议。在Windows服务器上,您可以非常轻松地禁用这些旧协议,而仅提供TLS1.1或更高版本。但是,如其他地方所述,如果禁用了较低版本的协议,则Microsoft SQL Server 2008 R2和SQL Server 2012(至少是Standard)都不会启动。但是,有越来越多的MS SQL Server版本。有SQL Server Standard,Business Intelligence,Enterprise,Express,Web和Compact版本。当然还有SQL Server 2008、2012、2014和(在预发行版本中)2016。

以下哪个版本支持或将仅支持TLS1.1或更高版本的协议?


附带说明:PCI要求涵盖了整个数据传输,因此将SQL通讯通过公共和/或无线网络包装在实施更好标准的VPN /隧道中就足够了。它们也可能根本不覆盖本地通信。因此,如果由于适当的SQL配置和/或防火墙和其他过滤功能,VLAN之外的任何东西甚至都无法触及SQL实例,则可能无需为此PoV担心。当然,如果您需要将SQL实例公开到公共网络,那么这两个事实都不会对您有帮助,但是无论如何,这个主意吓坏了我!
David Spillett'3

Answers:


19

微软最近(没有大张旗鼓地)透露他们将投资于TLS 1.2并逐步淘汰SSL。它应该与所有版本的SQL Server有关。

2016年1月29日更新Microsoft已在2008、2008 R2、2012和2014年宣布对TLS 1.2的正式支持。下载和其他信息可以在KB#3135244中找到。

我在博客中提到了一些已提及的问题,并在2014年使用加密端点时发出警告:

该帖子还指出了要下载的正确版本(或其他操作),具体取决于@@ version。

此举是否会影响所有现有版本(仅2014年及更高版本,还是仅2016年),还有待观察。下面的报价似乎暗示至少2014年将是工作的一部分-我怀疑大部分投资将在客户端库中,而不是在引擎中,因此可行的是,它将适用于下一发行版的任何版本的ODBC / Native Client驱动程序将支持。

我是从Microsoft的Kevin Farlee的PowerPoint资料夹中获得的,并被允许共享信息,尽管我不知道此时已经重新分发了多少信息。这是甲板上的确切报价:

飞行中的加密:保护客户端和服务器之间的数据免遭窥探和中间人攻击。在CY 15中升级到TLS 1.2,逐步淘汰SSL。

另外,如果您查看KB#3052404,似乎有一些修补程序可以与2012 SP +和2014配合使用(2016年将不需要此修补程序),但是没有迹象表明将有任何反向移植到SQL Server 2005、2008 ,或2008 R2(坦率地说,我会很惊讶)。


6

就像其他答案一样:您需要使用TLS1.2的最新CU。看到:

FIX:您不能使用传输层安全协议版本1.2连接到运行SQL Server 2014或SQL Server 2012的服务器

  • SQL Server 2014 SP1的累积更新1
  • SQL Server 2014的累积更新8
  • SQL Server 2012 SP3的累积更新1
  • SQL Server 2012 SP2的累积更新10

仅启用TLS 1.2之后,您可能会遇到两个错误:

  1. SQL Server 2014代理将无法启动。解决方案:从KB3135244中的下载链接安装SQL Server 2012 SNAC
  2. SQL Server Management Studio无法连接。解决方案:从KB3135244安装适用的.NET Framework修补程序

此外,您必须在连接到SQL Server的所有客户端上更新SNAC / OBDC驱动程序。

以下Microsoft支持知识库文章中包含SQL Server和客户端驱动程序生成的完整列表,以及下载链接和其他可能需要的配置更改:

TLS 1.2对Microsoft SQL Server的支持


为什么即使安装了SQL Server 2012 SP3的累积更新1,我仍然无法启动SQL Server 2012?
NickG '17

4

自2016年1月29日起,Microsoft SQL Server支持TLS 1.2:

  • SQL Server 2008
  • SQL Server 2008 R2
  • SQL Server 2012;和
  • SQL Server 2014

...以及主要的客户驱动程序,例如:

  • 服务器本机客户端
  • 用于SQL Server的Microsoft ODBC驱动程序
  • 用于SQL Server的Microsoft JDBC驱动程序
  • ADO.NET(SqlClient)。

SQL Server工程团队有关该发布的博客文章:

TLS 1.2对SQL Server 2008、2008 R2、2012和2014的支持

支持TLS 1.2以及客户端和服务器组件下载位置(KB3135244)的内部版本列表:

TLS 1.2对Microsoft SQL Server的支持(包括针对DB Mail的.NET修复程序)

注意:以上内容自初始发行版以来已进行了更新,以解决原始更新中的一个缺陷,该缺陷在连接到SQL Server 2008或SQL Server 2008 R2实例时导致间歇性服务终止。KB 3146034中对此进行了描述:

从KB3135244安装任何SQL Server 2008或SQL Server 2008 R2版本后,就会发生间歇性服务终止


2

我可以确认为SQL 2012 SP2 CU7(具有对CU6的TLS 1.2的TLS 1.2支持),您不能在服务器级别禁用TLS 1.0,并且能够使用实例上的未加密Management Studio连接来连接到SQL Server这不会强制客户端加密。

这是在不使用TDE或其他证书的实例上。

我将在为服务器生成受信任的证书并启用加密的连接之后尝试明天,但是目前无法在SQL 2012上禁用TLS 1.0,即使它支持TLS 1.2。

编辑:

我从内部认证中心为数据库服务器生成了一个证书,并且能够建立到SQL Server的加密管理工作室连接,直到禁用TLS 1.0协议为止,此时我不再能够连接。与没有证书和自签名证书时相同的行为用于加密登录会话。


2

我发现,即使使用SQL 2014 SP1 CU1,我也必须对IIS和SQL使用单独的框。在过程中,我遇到了一些明显相关的问题,并详细介绍了本文中的步骤。

关键点是:

  • 将IIS和SQL放在单独的盒子上
  • 禁用传入的TLS1.0并在IIS框中启用传出的TLS1.0
  • 在SQL框中同时启用TLS1.0。

1

这是我在前后服务器上所做的

  1. 打开gpedit.msc。在本地组策略编辑器中,双击“计算机配置”节点下的“ Windows设置”,然后双击“安全设置”。

  2. 在“安全设置”节点下,双击“本地策略”,然后单击“安全选项”。

  3. 在详细信息窗格中,双击“系统加密:使用符合FIPS的算法进行加密,散列和签名”。

  4. 在“系统密码:使用符合FIPS的算法进行加密,散列和签名”对话框中,单击“启用”,然后单击“确定”关闭对话框。关闭本地组策略编辑器。


我认为这是解决如何建立TLS 1.2,而不是实际的原来的问题,其中的SQL Server版本支持一些超出TLS 1.0,也许就用SQL后台Web服务器?如果可能的话,请在答案中加以说明。
RDFozz

谢谢,但是。。。在最初的问题中,我试图使它有点笼统,但这确实与在2015年中期提出最低要求和一系列技术有关。现在它已经过时了,我认为应该关闭它。像上面这样的任何答案都应该针对该问题的某些较新版本,而该版本更适合今天的问题。我本人目前没有这样的问题。
Mark Goldfain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.