Ssl

SQL Server SSL 連接 - 我錯過了什麼?

  • December 26, 2013

我正在嘗試設置我的 SQL Server 2008 R2 實例,以便它只接受 SSL 連接。我的理解是,一旦設置好,任何客戶端電腦都需要安裝證書才能連接。

我已按照http://msdn.microsoft.com/en-us/library/ms191192(v=sql.105).aspx上的說明進行操作,並在許多其他網站上進行了大量閱讀。我創建了一個證書,在 SQL Server 配置管理器(網路配置/協議/屬性)中選擇了它,並將“強制加密”設置為 true。我重新啟動了執行我的實例的服務。

完成所有這些之後,當我嘗試遠端連接到我的實例時,我成功了。通常我喜歡成功,但在這種情況下,我沒有安裝我的開發機器可以辨識的證書(這是我的實例所在的位置),當我查看連接屬性時,它說連接未加密。如果我選擇嘗試來自客戶端的加密連接(在連接框中的 SQL Server Management Studio 的選項中選擇此連接),我會遇到我期望的證書問題。

所以我的問題是:我是否正確,如果設置正確,來自客戶端的連接應該失敗(因為它缺少適當的證書)而無需在客戶端上配置任何東西?有什麼明顯的東西我可能會遺漏嗎?可能是我必須更改屬性的其他地方?我希望以前做過這件事的人會有一些想法。

順便說一句,在創建我的證書時,我遵循了 SQL Dude 在http://thesqldude.com/tag/makecert/上的說明。證書的名稱是我的開發機器的完全限定域名。

請注意,當您在伺服器端強制加密時,連接將使用 ssl 加密。您可以為此使用任何證書。您的連接將被加密,但是客戶端不會檢查 SQL Server 的身份是否確實有效。如果沒有這個檢查,你可能會為中間攻擊的人打開。

如果您在客戶端選擇強制加密,將執行完整的有效性檢查。這樣不僅連接被加密,客戶端也知道它連接的伺服器實際上是證書中提到的伺服器,因為它可以相信證書沒有被篡改。

為此,SQL Server 上使用的證書必須由客戶端信任的證書頒發機構頒發。這可以是任何知名的證書頒發機構,或者例如,當您有一個 Windows 域和該域中的 CA 時,您可以讓該 CA 頒發一個。然後,您必須將該 CA 的根證書導入所有客戶端,這也可以。

要檢查您的連接是否已加密,請使用以下命令:

SELECT session_id,encrypt_option
FROM sys.dm_exec_connections

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