本文提供啟用 SQL Server 加密的各種案例和相關程式的摘要,以及如何驗證加密是否正常運作。
加密伺服器的所有連線 (伺服器端加密)
| 憑證類型 | 強制在伺服器屬性中加密 | 在每個客戶端上匯入伺服器證書 | 信任伺服器證書設定 | 加密連接字串中的屬性 | 評論 |
|---|---|---|---|---|---|
| 自我簽署憑證 - 由 SQL Server 自動建立 | 是的 | 無法完成 | 是的 | 已忽略 | SQL Server 2016 (13.x) 和較舊版本使用 SHA1 演算法。 SQL Server 2017 (14.x) 和更新版本使用 SHA256。 如需詳細資訊,請參閱 SQL Server 2017 中自我簽署憑證哈希演算法的變更。 不建議此方法用於生產環境。 |
| 使用 New-SelfSignedCertificate 或 makecert 建立的自我簽署憑證 - 選項 1 | 是的 | 否 | 是的 | 已忽略 | 不建議此方法用於生產環境。 |
| 使用 New-SelfSignedCertificate 或 makecert 建立的自我簽署憑證 - 選項 2 | 是的 | 是的 | 可選 | 已忽略 | 不建議此方法用於生產環境。 |
| 公司的證書伺服器或來自不在參與者清單的證書頒發機構單位 (CA) - Microsoft受信任的根計劃 - 選項 1 | 是的 | 否 | 是的 | 已忽略 | |
| 公司的證書伺服器或來自不在 Microsoft 受信任根目錄計劃參與者名單 中的證書頒發機構 (CA) - 選項 2 | 是的 | 是的 | 可選 | 已忽略 | |
| 受信任的根授權權威 | 是的 | 否 | 可選 | 已忽略 | 我們建議採用此方法。 |
加密來自特定客戶端的連線
| 憑證類型 | 強制在伺服器屬性中加密 | 在每個客戶端上匯入伺服器證書 | 在用戶端上指定信任伺服器證書設定 | 在用戶端手動將加密屬性指定為 Yes/True | 評論 |
|---|---|---|---|---|---|
| 自我簽署憑證 - 由 SQL Server 自動建立 | 是的 | 無法完成 | 是的 | 已忽略 | SQL Server 2016 (13.x) 和較舊版本使用 SHA1 演算法。 SQL Server 2017 (14.x) 和更新版本使用 SHA256。 如需詳細資訊,請參閱 SQL Server 2017 中自我簽署憑證哈希演算法的變更。 不建議此方法用於生產環境。 |
| 使用 New-SelfSignedCertificate 或 makecert 建立的自我簽署憑證 - 選項 1 | 否 | 否 | 是的 | 是的 | 不建議此方法用於生產環境。 |
| 使用 New-SelfSignedCertificate 或 makecert 建立的自我簽署憑證 - 選項 2 | 否 | 是的 | 可選 | 是的 | 不建議此方法用於生產環境。 |
| 公司的憑證伺服器或來自不在 Microsoft 受信任的根計劃參與者清單中的 CA - 選項 1 | 否 | 否 | 是的 | 是的 | |
| 公司的證書伺服器或來自不在 Microsoft 受信任的根計劃參與者清單中的 CA - 選項 2 | 否 | 是的 | 可選 | 是的 | |
| 受信任的根授權權威 | 否 | 否 | 可選 | 是的 | 我們建議採用此方法。 |
如何判斷加密是否正常運作?
您可以使用Microsoft網路監視器或網路探查器等工具來監視通訊,並檢查工具中擷取的封包詳細數據,以確認流量已加密。
或者,您可以使用 Transact-SQL (T-SQL) 命令來檢查 SQL Server 連線的加密狀態。 若要這樣做,請遵循下列步驟:
- 在 SQL Server Management Studio (SSMS) 中開啟新的查詢視窗,並連線到 SQL Server 實例。
- 執行下列 T-SQL 命令來檢查資料行
encrypt_option的值。 對於加密連線,此值會是TRUE。
SELECT *
FROM sys.dm_exec_connections;