分享方式:


SQL Server 的憑證需求

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

SQL Server 加密的憑證需求

若要使用 TLS 進行 SQL Server 加密,您必須佈建符合下列條件的憑證 (三種數位類型之一):

  • 憑證必須位於本機電腦憑證存放區或 SQL Server 服務帳戶憑證存放區。 我們建議使用本機電腦憑證存放區,因為其可避免使用 SQL Server 啟動帳戶變更來重新設定憑證。

  • SQL Server Service Account 必須有存取 TLS 憑證的必要權限。 如需詳細資訊,請參閱針對加密連線設定 SQL Server 資料庫引擎

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

    注意

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

  • 憑證必須使用 AT_KEYEXCHANGEKeySpec 選項來建立。 這需要使用舊版密碼編譯儲存體提供者來儲存私密金鑰的憑證。 通常,憑證的金鑰使用方法屬性 (KEY_USAGE) 也包括金鑰編密 (CERT_KEY_ENCIPHERMENT_KEY_USAGE) 與數位簽章 (CERT_DIGITAL_SIGNATURE_KEY_USAGE)。

  • 憑證的 [主旨] 屬性必須指出一般名稱 (CN) 與伺服器電腦的主機名稱或完整網域名稱 (FQDN) 是相同的。 您使用主機名稱時,必須在憑證中指定 DNS 尾碼。 如果 SQL Server 是在容錯移轉叢集上執行,則一般名稱必須符合虛擬伺服器的主機名稱或 FQDN,且容錯移轉叢集中的所有節點都必須提供憑證。 例如,假設您有一個雙節點的叢集,節點的名稱分別為 test1.*<your company>*.comtest2.*<your company>*.com,且您有一部名為 virtsql 的虛擬伺服器,則需要同時在這兩個節點上安裝 virtsql.*<your company>*.com 的憑證。 如需關於 SQL 叢集的詳細資訊,請參閱安裝容錯移轉叢集之前

  • 您連線至可用性群組接聽程式時,為容錯移轉叢集中每個參與伺服器節點佈建的憑證,也應該在憑證的主體替代名稱中設定所有可用性群組接聽程式的清單。 如需詳細資訊,請參閱接聽程式和 TLS/SSL 憑證。 如需 SQL Always On 的詳細資訊,請參閱連線至 Always On 可用性群組接聽程式

  • 主體替代名稱應包含用戶端可用來連線至 SQL Server 執行個體的所有名稱。 如果使用可用性群組,主體別名應包括 localhost 和已建立接聽程式的 NetBIOS 和完整網域名稱 (FQDN)。

用戶端必須可確認伺服器所使用之憑證的擁有權。 如果用戶端具有已簽署伺服器憑證之憑證授權單位的公開金鑰憑證,則不需要進一步進行組態設定。 Microsoft Windows 包含許多憑證授權單位的公開金鑰憑證。 如果伺服器憑證是由用戶端沒有公開金鑰憑證的公開或私人憑證授權單位所簽署,則您必須在將要連線至 SQL Server 的每個用戶端上,安裝已簽署伺服器憑證之憑證授權單位的公開金鑰憑證。

重要

如果憑證存在於電腦存放區中,但僅符合上述清單中的一些需求,以及如果已手動設定供 SQL Server 組態管理員或透過登錄項目使用,則 SQL Server 將不會啟動。 請選取另一個符合所有需求的憑證,或移除 SQL Server 正在使用的憑證,直到您可以佈建符合需求的憑證,或使用自我產生的憑證,如 SQL Server 產生的自我簽署憑證中所述。

檢查憑證是否符合需求

在 SQL Server 2019 (15.x) 和更新版本中,SQL Server 組態管理員會在設定階段本身自動驗證所有憑證需求。 如果在設定憑證之後 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 加密。