【问题标题】:Enable TLS1.2 communication for webapplication and database server calls为 Web 应用程序和数据库服务器调用启用 TLS1.2 通信
【发布时间】:2018-07-19 08:47:38
【问题描述】:

我们有一个应用程序在 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 服务。我在一篇文章中读到,我们可以在不更改代码并更改提供程序名称 =“SQLNCI11”的情况下实现此目的。当我像下面这样更改提供商名称时,我收到了错误。说“无法找到请求的 .Net Framework 数据提供程序”

数据源=服务器名称;初始目录=数据库名称;uid=XXX;密码=XXXX;连接超时=200;MultipleActiveResultSets=True;当前语言=us_english;提供者名称="SQLNCI11"

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

  1. 作为替代方案,在不更改连接字符串中的提供者名称的情况下,我在连接字符串中添加了 Encrypt=true;TrustServerCertificate=true 数据源=服务器名称;初始目录=数据库名称;uid=XXX;密码=XXXX;连接超时=200;MultipleActiveResultSets=True;当前语言=us_english; Encrypt=true;TrustServerCertificate=true providername="System.Data.SqlClient"

在对连接字符串数据库调用进行上述更改后,当我看到使用wireshark工具进行以太网通信时,数据库到WCF服务的通信是使用TDS协议进行的,并且根据wireshark工具涉及TLS。如果我从连接字符串中删除“Encrypt=true;TrustServerCertificate=true”,那么我看不到“TLS Exchange”消息。

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

【问题讨论】:

    标签: sql asp.net security tls1.2


    【解决方案1】:

    一年后,我想评估同样的事情 - 确切了解我的 MS SQL 流量使用的 TLS 版本。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多