Microsoft SQL Server 的 TLS 1.2 支援

適用于:SQL Server
原始 KB 編號: 3135244

簡介

本文提供 Microsoft 發行以在 Windows 上啟用 TLS 1.2 支援 SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 和 SQL Server 2008 R2 的更新相關信息。 本文也會列出支援的用戶端提供者。 SQL Server 2016、SQL Server 2017 和 SQL Server 2019 支援 TLS 1.2,而不需要更新。

已針對安全套接字層 (SSL) 和舊版傳輸層安全性 (TLS) 回報數個已知弱點。 建議您升級至 TLS 1.2 以進行安全通訊。

重要事項

尚未報告 Microsoft TDS 實作的已知弱點。 這是 SQL Server 客戶端與 SQL Server 資料庫引擎之間使用的通訊協定。 TLS 1.0 的 Microsoft 安全通道實作 (關於在本文發行日期起向 Microsoft 回報的已知弱點,) 摘要說明 Windows 安全性狀態更新中 TLS 1.0 的 Schannel 實作:2015 年 11 月 24 日。

如何知道您是否需要此更新

使用下表來判斷目前版本的 SQL Server 是否已支援 TLS 1.2,或您是否必須下載更新才能啟用 TLS 1.2 支援。 使用資料表中的下載連結來取得適用於您環境的伺服器更新。

注意事項

比此表格所列的組建還晚的組建也支援 TLS 1.2。

SQL Server 版本 支援 TLS 1.2 的初始建置/發行 支援 TLS 1.2 的目前更新 其他資訊
SQL Server 2014 SP1 CU 12.0.4439.1

SP1 CU5
KB3130926 - SQL Server 2014 SP1 的累積更新 5

注意KB3130926 現在會安裝針對 2014 SP1 (CU13 - KB4019099) 所產生的最後一個 CU,其中包括 TLS 1.2 支援,以及目前發行的所有 Hotfix。 如有需要,#D6B26C11DD5314825AFD06B10BA7864D1 目錄中可使用 CU5。

注意2014 SP2 和 2014 SP3 也提供 TLS 1.2 支援
KB3052404 - 修正:您無法使用傳輸層安全性通訊協定 1.2 版連線到執行 SQL Server 2014 或 SQL Server 2012 的伺服器
SQL Server 2014 SP1 GDR 12.0.4219.0

SP1 GDR TLS 1.2 更新
最新的累積 GDR 更新- KB4019091提供 2014 SP1 GDR 的 TLS 1.2 支援。

注意2014 SP2 和 2014 SP3 也提供 TLS 1.2 支援
SQL Server 2014 RTM CU 12.0.2564.0

RTM CU12
KB3130923 - SQL Server 2014 的累積更新 12

注意:KB3130923現在會安裝 2014 RTM (CU14 - KB3158271 ) 發行的最後一個 CU,其中包括 TLS 1.2 支援和所有最新發行的 Hotfix。 如有需要,#D93861CE0E5EB4C21950D452DAC22F0FC 目錄中可使用 CU12。

注意2014 SP2 和 2014 SP3 也提供 TLS 1.2 支援
KB3052404 - 修正:您無法使用傳輸層安全性通訊協定 1.2 版連線到執行 SQL Server 2014 或 SQL Server 2012 的伺服器
SQL Server 2014 RTM GDR 12.0.2271.0

RTM GDR TLS 1.2 更新
目前只有安裝 2014 SP2 和 2014 SP3 才能使用 SQL 2014 RTM 的 TLS 支援。
SQL Server 2012 SP3 GDR 11.0.6216.27

SP3 GDR TLS 1.2 更新
SQL Server 2012 SP3 GDR 的安全性更新描述:2018 年 1 月 16 日

注意2012 SP4 也提供 TLS 1.2 支援。
SQL Server 2012 SP3 CU 11.0.6518.0

SP1 CU3
KB3123299 - SQL Server 2012 SP3 的累積更新 1

注意:KB3123299現在會安裝 2012 SP3 (CU10 - KB4025925 發行的最後一個 CU,其中包括 TLS 1.2 支援,以及目前發行) 的所有 Hotfix。 如有需要,#D314CF423F32648B490E2FA063D645056 目錄中可使用 CU1。

注意2012 SP4 也提供 TLS 1.2 支援。
KB3052404 - 修正:您無法使用傳輸層安全性通訊協定 1.2 版連線到執行 SQL Server 2014 或 SQL Server 2012 的伺服器
SQL Server 2012 SP2 GDR 11.0.5352.0

SP2 GDR TLS 1.2 更新
最新的累積 GDR 更新提供 2012 SP2 GDR 的 TLS 1.2 支援 - KB3194719

2012 SP3 和 2012 SP4 也提供 TLS 1.2 支援
SQL Server 2012 SP2 CU 11.0.5644.2

SP2 CU10
KB3120313 - SQL Server 2012 SP2 的累積更新 10

注意:KB3120313現在會安裝 2012 SP2 (CU16 - KB3205054 發行的最後一個 CU,其中包含 TLS 1.2 支援,以及目前發行) 的所有 Hotfix。 如有需要,#D314CF423F32648B490E2FA063D645056 目錄中可使用 CU1。 注意2012 SP3 和 2012 SP4 也提供 TLS 1.2 支援
KB3052404 - 修正:您無法使用傳輸層安全性通訊協定 1.2 版連線到執行 SQL Server 2014 或 SQL Server 2012 的伺服器
SQL Server 2008 R2 SP3 (僅限 x86/x64) 10.50.6542.0

SP2 TLS 1.2 更新
TLS 1.2 支援適用於 SQL Server 2008 R2 SP3 - KB4057113 的最新累積更新。
SQL Server 2008 R2 SP2 GDR (僅限 IA-64) 10.50.4047.0

SP2 TLS 1.2 更新
SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2 匯報
SQL Server 2008 R2 SP2 CU (僅限 IA-64) 10.50.4344.0

SP2 TLS 1.2 更新
SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2 匯報
SQL Server 2008 SP4 (僅限 x86/x64) 10.0.6547.0

SP4 TLS 1.2 更新
TLS 1.2 支援適用於 SQL Server 2008 SP4 的最新累積更新 - 僅KB4057114 (x86/x64) 。
SQL Server 2008 SP3 GDR (僅限 IA-64) 10.0.5545.0

SP3 TLS 1.2 更新
SQL Server 2008 SP3 GDR (IA-64) TLS 1.2 匯報
SQL Server 2008 SP3 CU (僅限 IA-64) 10.0.5896.0

SP3 TLS 1.2 更新
SQL Server 2008 SP3 CU (IA-64) TLS 1.2 匯報

用戶端元件下載

使用下表下載適用於您環境的用戶端元件和驅動程式更新。

用戶端元件/驅動程式 支援 TLS 1.2 的 匯報
SQL Server Native Client 10.0 適用於 SQL Server 2008/2008 R2 (x86/x64/IA64) Microsoft SQL Server 2008 和 SQL Server 2008 R2 Native Client
SQL Server Native Client 2012/2014 SQL Server 11.0 (x86/x64) Microsoft SQL Server 2012 Native Client - QFE
MDAC 用戶端元件 (Sqlsrv32.dll 和 Sqloledb.dll) Windows 10 版本 1809 的維護堆疊更新:2020 年 11 月 10 日

SQL Server 使用 TLS 1.2 所需的其他修正

您必須安裝下列 .NET Hotfix 匯總,才能啟用 SQL Server 功能,例如 Database Mail,以及某些使用需要 TLS 1.2 支援之 .NET 端點的 SSIS 元件,例如 Web 服務工作,才能使用 TLS 1.2。

作業系統 .NET Framework 版本 支援 TLS 1.2 的 匯報
Windows 7 Service Pack 1、Windows 2008 R2 Service Pack 1 3.5.1 支援 .NET Framework 3.5.1 版中包含的 TLS v1.2
Windows 8 RTM、Windows 2012 RTM 3.5 支援 .NET Framework 3.5 版中包含的 TLS v1.2
Windows 8.1,Windows 2012 R2 SP1 3.5 SP1 支援 Windows 8.1 .NET Framework 3.5 SP1 版中包含的 TLS v1.2,Windows Server 2012 R2

常見問題集

  • SQL Server 2016 和更新版本是否支援 TLS 1.1?

    是。 SQL Server 2016、SQL Server 2017 和 Windows 版本上的 SQL Server 2019 提供 TLS 1.0 至 TLS 1.2 支援。 如果您只想要使用 TLS 1.2 進行用戶端與伺服器通訊,則必須停用 TLS 1.0 和 1.1。

  • SQL Server 2019 是否允許使用 TLS 1.0 或 1.1 或僅 1.2 的連線?

    SQL Server 2019 的支援層級與 SQL Server 2016 和 2017 SQL Server 相同,SQL Server 2019 支援舊版 TLS。 SQL Server 2019 RTM 隨附 TLS 1.2 支援,不需要其他更新或修正即可啟用 TLS 1.2 支援。

  • TDS 是否會受到已知弱點影響?

    尚未報告 Microsoft TDS 實作的已知弱點。 由於有數個標準強制組織會強制使用 TLS 1.2 來加密通道,因此 Microsoft 會針對廣泛的 SQL Server 安裝基礎發行 TLS 1.2 支援。

  • 如何將 TLS 1.2 更新散發給客戶?

    本文提供支援 TLS 1.2 之適當伺服器和用戶端更新的下載連結。

  • TLS 1.2 是否支援 2005 SQL Server?

    TLS 1.2 支援僅適用於 SQL Server 2008 和更新版本。

  • 如果伺服器上停用 SSL 3.0 和 TLS 1.0,未使用 SSL/TLS 的客戶是否會受到影響?

    是。 SQL Server 在登入期間加密使用者名稱和密碼,即使未使用安全通道也一般。 所有未使用安全通訊且在伺服器上停用 TLS 1.2 以外所有其他通訊協定的 SQL Server 實例都需要此更新。

  • 哪些版本的 Windows Server 支援 TLS 1.2?

    Windows Server 2008 R2 和更新版本支援 TLS 1.2。

  • 啟用 TLS 1.2 進行 SQL Server 通訊的正確登錄設定為何?

    正確的登入設定如下:

    • [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
    • [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

    伺服器和客戶端電腦都需要這些設定。 EnabledDisabledByDefault 設定必須在 Windows 7 用戶端和 Windows Server 2008 R2 伺服器上建立。 在 Windows 8 和更新版本的用戶端操作系統或 Windows Server 2012 伺服器和更新版本的伺服器作業系統上,應該已啟用 TLS 1.2。 如果您要實作 Windows 登錄的部署原則,且該原則必須與 OS 版本無關,則建議您將上述登錄機碼新增至原則。 此外,如果您在 SQL Server 上使用 Database Mail,您也需要設定下列 .NET 登錄機碼:

    • [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001

已知問題

  • 問題 1

    SQL Server Management Studio (在套用 SQL Server 2008、2008 R2、2012 或 2014 的修正之後,SSMS) 、報表伺服器和報表管理員不會連線到資料庫引擎。 報表伺服器和報表管理員失敗,並傳回下列錯誤訊息:

    報表伺服器無法開啟與報表伺服器資料庫的連接。 所有要求和處理都需要與資料庫的連接。 (rsReportServerDatabaseUnavailable)

    發生此問題的原因是 SSMS、報表管理員和 Reporting Services Configuration Manager 使用 ADO.NET,而 TLS 1.2 的 ADO.NET 支援僅適用於 .NET Framework 4.6。 針對舊版的 .NET Framework,您必須套用 Windows 更新,讓 ADO.NET 可以支援用戶端的 TLS 1.2 通訊。 在舊版 .NET Framework 中啟用 TLS 1.2 支援的 Windows 更新會列在 如何知道您是否需要此更新 一節的表格中。

  • 問題 2

    Reporting Services Configuration Manager 報告下列錯誤訊息,即使在用戶端提供者已更新為支援 TLS 1.2 的版本之後:

    無法連線到伺服器:已成功建立與伺服器的連線,但在登入前交握期間發生錯誤。

    用戶端提供者更新為支援 TLS 1.2 的版本之後,測試連線錯誤的螢幕快照。

    若要解決此問題,請在裝載 Reporting Services Configuration Manager 的系統上手動建立下列登錄機碼:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client: "Enabled"=dword:00000001

  • 問題 3

    當您在 SQL Server 中使用可用性群組、資料庫鏡像或 Service Broker 的加密通訊時,使用 TLS 1.2 的加密端點通訊會失敗。 SQL 錯誤記錄檔中會記錄類似下列的錯誤訊息:

    Connection handshake failed. An OS call failed: (80090331) 0x80090331(The client and server cannot communicate, because they do not possess a common algorithm.). State 56.
    

    如需此問題的詳細資訊,請參閱 FIX:使用 SQL Server 時,與 TLS 1.2 的加密端點通訊會失敗

  • 問題 4

    當您嘗試在已啟用 TLS 1.2 的伺服器上安裝 SQL Server 2012 或 SQL Server 2014 時,會發生各種錯誤。

    如需詳細資訊,請參閱 FIX:當您在已啟用 TLS 1.2 的伺服器上安裝 SQL Server 2012 或 SQL Server 2014 時發生錯誤。

  • 問題 5

    當您停用 TLS 1.2 以外的所有其他通訊協議之後,使用憑證時,與資料庫鏡像或可用性群組的加密連線無法運作。 類似下列的錯誤訊息會記錄在 SQL Server 錯誤記錄檔中:

    當您停用 TLS 1.2 以外的所有其他通訊協議之後,使用憑證時,與資料庫鏡像或可用性群組的加密連線無法運作。 您可能會注意到下列其中一個徵兆:

    • 徵兆 1:

      類似下列的錯誤訊息會記錄在 SQL Server 錯誤記錄檔中:

      Connection handshake failed. An OS call failed: (80090331) 0x80090331(The client and server cannot communicate, because they do not possess a common algorithm.). State 58.'
      
    • 徵兆 2:

      Windows 事件記錄檔中會記錄類似下列的錯誤訊息:

      Log Name:      System
      Source:        Schannel
      Date:          <Date Time>
      Event ID:      36888
      Task Category: None
      Level:         Error
      Keywords:     
      User:          SYSTEM
      Computer:      ------------
      Description:
      A fatal alert was generated and sent to the remote endpoint. This may result in termination of the connection. The TLS protocol defined fatal error code is 40. The Windows SChannel error state is 1205.
      
      Log Name:      System
      Source:        Schannel
      Date:          <Date Time>
      Event ID:      36874
      Task Category: None
      Level:         Error
      Keywords:     
      User:          SYSTEM
      Computer:      -----------
      Description:
      An TLS 1.2 connection request was received from a remote client application, but none of the cipher suites supported by the client application are supported by the server. The SSL connection request has failed.
      

      發生此問題的原因是可用性群組和資料庫鏡像需要不使用固定長度哈希演算法的憑證,例如 MD5。 TLS 1.2 不支援固定長度哈希演算法。

    如需詳細資訊,請參閱 FIX:如果 SQL Server 使用 TLS 1.2,則使用 MD5 哈希演算法的通訊會失敗

  • 問題 6

    下列 SQL Server 資料庫引擎版本會受到知識庫文章3146034中所報告的間歇性服務終止問題影響。 若要讓客戶免於服務終止問題,建議他們安裝本文所述 SQL Server 的 TLS 1.2 更新,如果下表列出其 SQL Server 版本:

    SQL Server 版本 受影響的版本
    SQL Server 2008 R2 SP3 (x86 和 x64) 10.50.6537.0
    SQL Server 2008 R2 SP2 GDR (僅限 IA-64) 10.50.4046.0
    SQL Server 2008 R2 SP2 (僅限 IA-64) 10.50.4343.0
    SQL Server 2008 SP4 (x86 和 x64) 10.0.6543.0
    SQL Server 2008 SP3 GDR (僅限 IA-64) 10.0.5544.0
    SQL Server 2008 SP3 (僅限 IA-64) 10.0.5894.0
  • 問題 7

    Database Mail 不適用於 TLS 1.2。 Database Mail 失敗,並出現下列錯誤:

    Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException:無法從資料庫讀取郵件設定資訊。 無法啟動郵件會話。

    如需詳細資訊,請參閱 SQL Server 使用 TLS 1 所需的其他修正

當用戶端或伺服器上缺少 TLS 1.2 更新時,您可能會遇到的常見錯誤

問題 1

在 SQL Server 上啟用 TLS 1.2 通訊協議之後,System Center Configuration Manager (SCCM) 無法連線到 SQL Server。 在此情況下,您會收到下列錯誤訊息:

TCP 提供者:遠端主機已強制關閉現有的連線

當 SCCM 使用沒有修正程式的 SQL Server Native Client 驅動程式時,可能會發生此問題。 若要解決此問題,請下載並安裝用戶端 元件下載 一節中所列的用戶端修正程式。 例如,Microsoft® SQL Server ® 2012 Native Client - QFE

您可以藉由檢視 SCCM 記錄,找出 SCCM 用來連線到 SQL Server 的驅動程式,如下列範例所示:

[SQL Server Native Client 11.0]TCP Provider: An existing connection was forcibly closed by the remote host.~~  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 *** [08001][10054][Microsoft][SQL Server Native Client 11.0]Client unable to establish connection  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 *** Failed to connect to the SQL Server, connection type: SMS ACCESS.  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 INFO: SQL Connection failed. Connection: SMS ACCESS, Type: Secure  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>Native Client 11.0]TCP Provider: An existing connection was forcibly closed by the remote host.~~  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 *** [08001][10054][Microsoft][SQL Server Native Client 11.0]Client unable to establish connection  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 *** Failed to connect to the SQL Server, connection type: SMS ACCESS.  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>
 INFO: SQL Connection failed. Connection: SMS ACCESS, Type: Secure  $$<Configuration Manager Setup><08-22-2016 04:15:01.917+420><thread=2868 (0xB34)>