簡體   English   中英

為Web應用程序和數據庫服務器調用啟用TLS1.2通信

[英]Enable TLS1.2 communication for webapplication and database server calls

我們有一個運行在帶有4.6框架和數據庫的Windows 2012 R2 OS上的應用程序(作為SQL Server 2012)。由於安全方面的考慮,我們被要求為應用程序服務器與數據庫服務器之間的調用啟用TLS1.2協議,反之亦然。 我遵循以下URL,並且已安裝所有補丁。 https://support.microsoft.com/zh-cn/help/3135244/tls-1-2-support-for-microsoft-sql-server

我們的前端應用程序不直接調用數據庫,而是在前端應用程序(asp.net)和SQL Server之間提供WCF服務。 我讀過一篇文章,我們無需更改代碼並更改providername =“ SQLNCI11”就可以實現這一目標。 當我如下更改提供商名稱時,我得到了錯誤。 說“無法找到所請求的.Net Framework數據提供程序”

數據源=服務器名稱;初始目錄=數據庫名稱; uid = XXX; pwd = XXXX;連接超時= 200; MultipleActiveResultSets = True;當前語言= us_english; providername =“ SQLNCI11”

我已經驗證了machine.config,但找不到SQL本機客戶端的DBproviderfactory。我在這里遺漏了什么嗎?

  1. 或者,在不更改連接字符串中提供者名稱的情況下,我在連接字符串中添加了Encrypt = true; TrustServerCertificate = true數據源=服務器名稱;初始目錄= DBname; uid = XXX; pwd = XXXX;連接超時= 200; MultipleActiveResultSets = True ; Current Language = us_english; Encrypt = true; TrustServerCertificate = true providername =“ System.Data.SqlClient”

在對連接字符串進行上述更改之后,數據庫調用成功,並且當我看到使用Wireshark工具進行以太網通信時,就使用TDS協議進行了數據庫到WCF服務的通信,並且根據Wireshark工具涉及了TLS。 如果我從連接字符串中刪除“ Encrypt = true; TrustServerCertificate = true”,那么我看不到“ TLS Exchange”消息。

在此處輸入圖片說明

我需要采取什么步驟來確保應用程序使用TLS 1.2協議與數據庫進行通信? 並請提出如何證明這種交流的建議。

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

實際上,涉及MS SQL流量時,TLS封裝在TDS中。 您可以看到TDS標頭(從0x12開始-圖片中以黃色高亮顯示)。 在此標頭開始TLS數據包之后,您可以通過查看第二和第三TLS數據包來檢查版本。

在我的示例中,0x03 0x03代表TLS 1.2(TLS協議的第三個版本)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM