为Web应用程序和数据库服务器调用启用TLS1.2通信

时间:2018-02-08 17:22:43

标签: sql asp.net security tls1.2

我们在Windows 2012 R2 OS上运行了一个应用程序,其中包含4.6框架和数据库作为SQL Server 2012.出于安全考虑,我们被要求为应用程序服务器与数据库服务器之间的调用启用TLS1.2协议,反之亦然。我已经按照以下URL,我们安装了所有补丁。 https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server

我们的前端应用程序不会直接调用数据库,而是在前端应用程序(asp.net)和SQL服务器之间提供WCF服务。我在一篇文章中读到了我们可以实现这一点而无需更改代码并更改providername =“SQLNCI11”。当我更改提供者名称如下所示我得到错误。说“无法找到所请求的.Net框架数据提供程序”

Data Source = servername; Initial Catalog = DBname; uid = XXX; pwd = XXXX; Connect Timeout = 200; MultipleActiveResultSets = True; Current Language = us_english;的providerName = “SQLNCI11”

我已经验证了machine.config并且我没有找到SQL本机客户端的DBproviderfactory。我在这里遗漏了什么?

  1. 作为替代方案,在不更改连接字符串中的提供程序名称的情况下,我在连接字符串中添加了Encrypt = true; TrustServerCertificate = true Data Source = servername; Initial Catalog = DBname; uid = XXX; pwd = XXXX; Connect Timeout = 200; MultipleActiveResultSets = True; Current Language = us_english; Encrypt = true; TrustServerCertificate = true providername =“System.Data.SqlClient”
  2. 在连接字符串中进行上述更改后,数据库调用成功,当我看到使用wireshark工具进行以太网通信时,数据库与 TDS 协议进行WCF服务通信,并根据wireshark工具涉及TLS。如果我从连接字符串中删除“Encrypt = true; TrustServerCertificate = true”,那么我不会看到“TLS Exchange”消息。

    enter image description here

    我需要采取哪些步骤来确保应用程序使用TLS 1.2协议与数据库进行通信?还请建议如何证明这种沟通。

1 个答案:

答案 0 :(得分:0)

一年后,我想评估一下同一件事-确切知道我的MS SQL通信使用的是哪个TLS版本。

关于MS SQL流量,实际上TLS封装在TDS中。 您可以看到TDS标头(从0x12开始-图片中以黄色高亮显示)。 在此标头开始TLS数据包之后,您可以通过查看第二和第三TLS数据包来检查版本。

在我的示例中,0x03 0x03代表TLS 1.2(TLS协议的第三个版本)

enter image description here