共用方式為


SQL Server 的憑證需求

本文說明 SQL Server 的憑證需求,以及如何檢查憑證是否符合這些需求。

SQL Server 加密的憑證需求

若要使用傳輸層安全性 (TLS) 進行 SQL Server 加密,您需要布建符合下列條件的憑證(三種數字類型之一:

  • 憑證必須位於本機計算機證書存儲或 SQL Server 服務帳戶證書存儲中。 建議您使用本機計算機證書存儲,避免使用 SQL Server 啟動帳戶變更來重新設定憑證。

  • SQL Server 服務帳戶必須具有存取 TLS 憑證的必要許可權。 如需詳細資訊,請參閱 設定 SQL Server Database Engine 來加密連線

  • 目前的系統時間必須在憑證的屬性 有效期自 的值之後,並且在屬性 有效期至 的值之前。 如需詳細資訊,請參閱 過期的憑證

    備註

    憑證必須是為了伺服器驗證而準備的。 這需要憑證的增強密鑰使用方式屬性來指定伺服器驗證(1.3.6.1.5.5.7.3.1)。

  • 憑證必須使用KeySpecAT_KEYEXCHANGE選項來建立。 這需要使用 舊版密碼編譯記憶體提供者 來儲存私鑰的憑證。 通常,憑證的金鑰使用方式屬性 (KEY_USAGE) 也包含金鑰加密 () 和數位簽名 (CERT_KEY_ENCIPHERMENT_KEY_USAGECERT_DIGITAL_SIGNATURE_KEY_USAGE)。

  • 憑證的 Subject 屬性必須指出一般名稱 (CN) 與伺服器電腦的主機名或完整功能變數名稱 (FQDN) 相同。 當您使用主機名時,必須在憑證中指定 DNS 後綴。 如果 SQL Server 在故障轉移叢集上執行,一般名稱必須符合虛擬伺服器的主機名或 FQDN,而且必須在故障轉移叢集中的所有節點上布建憑證。 例如,如果您有兩個節點的叢集,且具有名為 test1.*<your company>*.comtest2.*<your company>*.com的節點,而且您有名為 virtsql 的虛擬伺服器,則必須在兩個 virtsql.*<your company>*.com 節點上安裝憑證。 如需有關 SQL 叢集的更多資訊,請參閱 安裝容錯移轉叢集之前

  • 當您連線到可用性群組接聽程式時,故障轉移叢集中每個參與伺服器節點所布建的憑證中,也應在憑證的 替代名稱 條目中列示所有可用性群組接聽程式清單。 如需詳細資訊,請參閱 接聽程式和 TLS/SSL 憑證。 如需 SQL Always On 的詳細資訊,請參閱 連線到 AlwaysOn 可用性群組接聽程式

  • 主體替代名稱應該包含用戶端可能用來連線到 SQL Server 實例的所有名稱。 如果使用可用性群組,主體備用名稱應包含本地主機和所建立接聽程式的 NetBIOS 名稱和完整網域名稱 (FQDN)。

用戶端必須能夠驗證伺服器所使用的憑證擁有權。 如果用戶端具有簽署伺服器證書之證書頒發機構單位的公鑰憑證,則不需要進一步設定。 Microsoft Windows 包含許多證書頒發機構單位的公鑰憑證。 如果伺服器證書是由客戶端沒有公鑰憑證的公開或私人證書頒發機構單位所簽署,您必須在要連線到 SQL Server 的每個用戶端上安裝證書頒發機構單位的公鑰憑證。

這很重要

如果計算機存放區中存在憑證,但它只符合上述清單中的部分需求並且已經通過 SQL Server 組態管理員或登錄項進行手動配置以供使用,那麼 SQL Server 將不會啟動。 選取另一個符合所有需求的憑證,或移除 SQL Server 所使用的憑證,直到您可以布建符合需求的憑證,或使用自我產生的憑證,如 SQL Server 產生的自我簽署憑證中所述。

檢查憑證是否符合需求

在 SQL Server 2019 (15.x) 和更新版本中,SQL Server Configuration Manager 會在設定階段本身自動驗證所有憑證需求。 如果 SQL Server 在您設定憑證之後成功啟動,表示 SQL Server 可以使用該憑證。 但某些用戶端應用程式對於可用於加密的憑證仍有其他需求,而且根據所使用的應用程式,您可能會遇到不同的錯誤。 在該案例中,您必須檢查用戶端應用程式的支援檔,以取得主題的詳細資訊。

您可以使用下列其中一種方法來檢查憑證的有效性,以搭配 SQL Server 使用:

  • sqlcheck 工具sqlcheck 是命令行工具,可檢查目前的計算機和服務帳戶設定,併產生文字報告給控制台視窗,以針對各種連線錯誤進行疑難解答。 輸出有關於憑證的下列資訊:

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    如需工具功能及下載指示的詳細資訊,請參閱 歡迎使用 CSS_SQL_Networking_Tools wiki

  • certutil 工具certutil.exe 是命令行程式,會安裝為憑證服務的一部分。 您可以使用命令 certutil.exe 來傾印和顯示憑證資訊。 使用-v選項來取得詳細資訊。 如需詳細資訊,請參閱 certutil

  • 憑證嵌入式管理單元:您也可以使用 [ 憑證] 嵌入式管理單元視窗,檢視計算機上各種證書存儲中憑證的詳細資訊。 但此工具不會顯示 KeySpec 資訊。 如需如何使用 MMC 嵌入式管理單元檢視憑證的詳細資訊,請參閱 如何:使用 MMC 嵌入式管理單元檢視憑證

詳細資訊

已過期憑證

SQL Server 只會在設定時檢查憑證的有效性。 例如,您無法在 SQL Server 2019 (15.x) 和更新版本上使用 Configuration Manager 來布建過期的憑證。 如果憑證在布建之後到期,SQL Server 會繼續執行,而不會發生問題。 但是,某些用戶端應用程式,例如 Power BI 會檢查每個連線上的憑證有效性,並在 SQL Server 實例設定為使用過期憑證進行加密時引發錯誤。 我們建議您不要使用過期的憑證進行 SQL Server 加密。