Sql-Server

將 SQL Server 配置為雙向加密數據流量

  • November 8, 2016

如何確保 SQL Server 數據流量通過從伺服器到客戶端以及從客戶端到伺服器的線路進行加密?

我已將 Force Encryption 設置為 Yes,僅此一項似乎就隱藏了 Profiler 和 MS Message Analyzer 的查詢資訊。這就是我需要做的一切嗎?許多文件表明還需要證書。

因此,我創建了一個 p12 證書,將其導入證書儲存區並從 SQL Server 配置管理器協議的“證書”選項卡中選擇它。然後,即使刪除證書,我也無法重新啟動服務。

我想獲得一些關於如何實現有線加密的明確說明。

有兩種可能的方法可以確保您加密從客戶端到 SQL Server 的連接。第一個選項是在客戶端和伺服器上手動設置 IPsec,或者使用IPSec 策略,或者您可以設置 SSL 加密。最簡單的方法是使用來自伺服器的自簽名證書,但由於在連接握手期間交換了這些證書,因此它們的安全性受到限制,因此建議使用來自受信任根的證書。

您可以按照TheSQLDude說明使用 MAKECERT.exe 創建測試證書,並將自己創建的根證書複製到所有客戶端。

因此,要在 SQL Server 中通過網路設置 SSL 加密,您需要由受信任的提供者簽名的證書,這意味著您的 SQL Server 需要具有有效的 FQDN,因為沒有證書提供者為無效的完全限定域名創建證書(例如.local) . 或者,您也可以安裝自己的可信 PKI 基礎設施,例如 Active Directory 證書服務 (ADCS)。

這是必需的,因為所有客戶端都需要信任對您在 SQL Server 上安裝的證書進行簽名的根證書。

為 SQL Server 創建證書時,需要使用某些擴展屬性創建證書,最重要的是它需要設置為伺服器身份驗證 (1.3.6.1.5.5.7.3.1),這意味著您可能需要在 ADCS 中創建模板或您可以使用certreq創建證書 CSR

為此,您需要創建一個 csr.inf 文件

[版本]
簽名 = "$Windows NT$"
[新請求]
主題 = "CN = SERVER.DOMAIN.TLD"
友好名稱 = SERVER.DOMAIN.TLD
MachineKeySet = 真
請求類型=證書
;簽名算法 = SHA256
密鑰長度 = 4096
密鑰規格 = 1
KeyUsage = 0xA0
MachineKeySet = 真
可導出 = TRUE
雜湊算法 = sha512
有效期 = 年
ValidityPeriodUnits = 10
[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1

然後,您可以創建 CSR 以發送到 CA

certreq.exe -new csr.inf keycertrequest.csr

或在提升的命令提示符下從 ADCS 獲取證書

Certreq -new -f cer.inf Certificate.cer

然後您可以從您的個人儲存中導出該證書並將其導入到 SQL Server 帳戶的儲存中。

安裝證書後,您可以在 SQL Server 配置管理器中啟用加密。建議僅使用 TLS 1.2,但您需要確保已將 SQL Server 本機客戶端和 SQL Server 更新到最新更新。SentryOne發佈公告中都很好地解釋了這一切

引用自:https://dba.stackexchange.com/questions/154544