Microsoft SQL Server 的 TLS 1.2 支援
適用於:SQL Server
原始 KB 編號: 3135244
簡介
本文提供 windows、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2012、SQL Server 2008 和 SQL Server 2008 R2 上啟用 TLS 1.2 支援之 Microsoft更新的相關信息。 本文也會列出支援的用戶端提供者。 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說明 TLS 1.0 的已知弱點: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 所產生的最後一個 CU(CU13 - KB4019099),其中包含 TLS 1.2 支援,以及迄今為止發行的所有 Hotfix。 如有需要,可以在 Windows Update 目錄中取得 CU5。 注意:2014 SP2 和 2014 SP3 也提供 TLS 1.2 支援。 |
KB3052404 - FIX:您無法使用傳輸層安全性通訊協定 1.2 版連線到執行 SQL Server 2014 或 SQL Server 2012 的伺服器 |
SQL Server 2014 SP1 GDR | 12.0.4219.0 SP1 GDR TLS 1.2 更新 |
2014 SP1 GDR 的 TLS 1.2 支援可在最新的累積 GDR 更新 - KB4019091中使用。 注意: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 發行的最後一個 CU(CU14 - KB3158271 ),其中包含 TLS 1.2 支援,以及迄今為止發行的所有 Hotfix。 如有需要,可以在 Windows Update 目錄中取得 CU12。 注意:2014 SP2 和 2014 SP3 也提供 TLS 1.2 支援。 |
KB3052404 - FIX:您無法使用傳輸層安全性通訊協定 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 發行的最後一個 CU(CU10 - KB4025925,其中包括 TLS 1.2 支援,以及迄今為止發行的所有 Hotfix)。 如有需要,可以在 Windows Update 目錄中取得 CU1。 注意:2012 SP4 也提供 TLS 1.2 支援。 |
KB3052404 - FIX:您無法使用傳輸層安全性通訊協定 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 發行的最後一個 CU(CU16 - KB3205054,其中包括 TLS 1.2 支援,以及迄今為止發行的所有 Hotfix)。 如有需要,可以在 Windows Update 目錄中取得 CU1。 注意:2012 SP3 和 2012 SP4 也提供 TLS 1.2 支援。 |
KB3052404 - FIX:您無法使用傳輸層安全性通訊協定 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 更新 |
SQL Server 2008 SP4 的最新累積更新提供 TLS 1.2 支援 - 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 2008/2008 R2 的 SQL Server Native Client 10.0 (x86/x64/IA64) | Microsoft SQL Server 2008 和 SQL Server 2008 R2 Native Client |
SQL Server 2012/2014 的 SQL Server Native Client 11.0 (x86/x64) | Microsoft SQL Server 2012 Native Client - QFE |
MDAC 用戶端元件 (Sqlsrv32.dll 和 Sqloledb.dll) | Windows 10 版本 1809 的服務堆棧更新:2020 年 11 月 10 日 |
TLS 1.2 用戶端驅動程式支援的摘要數據表
下表摘要說明 SQL Server 驅動程式和提供者的支援:
驅動程式 | TLS 1.2 支援 | 注意 |
---|---|---|
Microsoft ODBC Driver for SQL Server 11 | 是,具有更新 | 安裝 SQL Server 2012 或 SQL Server 2014 的最新累積更新。 (請參閱 中的 表格如何知道您是否需要此更新 一節。) |
Microsoft ODBC Driver for SQL Server 13 | 是 | 原生支援 TLS 1.2。 |
Microsoft ODBC Driver for SQL Server 17 | 是 | 原生支援 TLS 1.2。 |
Microsoft ODBC Driver for SQL Server 18 | 是 | 原生支援 TLS 1.2。 |
Microsoft OLE DB Driver for SQL Server 19 (MSOLEDBSQL) | 是 | 原生支援 TLS 1.2。 |
SQL Server Native Client 10 | 是,具有更新 | 安裝 SQL Server 2008 或 SQL Server 2008 R2 的最新累積更新。 (請參閱 中的 表格如何知道您是否需要此更新 一節。) |
SQL Server Native Client 11 | 是,具有更新 | 安裝 SQL Server 2012 或 SQL Server 2014 的最新累積更新。 (請參閱 中的 表格如何知道您是否需要此更新 一節。) |
SQL Server ODBC Driver (SQLSRV32.DLL) | 是,適用於特定OS | 已在 Windows Server 2019 和 Windows 10 中新增支援。 舊版操作系統不支援它。 |
SQL Server OLE DB 提供者 (SQLOLEDB) | 是,適用於特定OS | 已在 Windows Server 2019 和 Windows 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 和 Windows Server 2012 R2 上 .NET Framework 3.5 SP1 版中包含的 TLS v1.2 支援 |
常見問題集
SQL Server 2016 和更新版本是否支援 TLS 1.1?
是。 Windows 上的 SQL Server 2016、Windows 上的 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 和 SQL Server 2017 相同,而 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 是否支援 SQL Server 2005?
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
伺服器和客戶端電腦都需要這些設定。
Enabled
和DisabledByDefault
設定必須在 Windows 7 用戶端和 Windows Server 2008 R2 伺服器上建立。 在 Windows 8 和更新版本的用戶端作業系統或 Windows Server 2012 伺服器和更新版本的伺服器操作系統上,應該已經啟用 TLS 1.2。 如果您要為需要與操作系統版本無關的 Windows 登錄實作部署原則,建議您將提及的登錄機碼新增至原則。 此外,如果您在 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 2008、2008 R2、2012 或 2014 的修正之後,SQL Server Management Studio(SSMS)、報表伺服器和報表管理員不會連線到資料庫引擎。 報表伺服器和報表管理員失敗,並傳回下列錯誤訊息:
報表伺服器無法開啟到報表伺服器資料庫的連接。 所有要求和處理都需要與資料庫連接。 (rsReportServerDatabaseUnavailable)
之所以發生此問題,是因為 SSMS、報表管理員和 Reporting Services 組態管理員使用 ADO.NET,ADO.NET 而且只有 .NET Framework 4.6 才支援 TLS 1.2。 針對舊版 .NET Framework,您必須套用 Windows 更新,讓 ADO.NET 可以支援用戶端的 TLS 1.2 通訊。 在舊版 .NET Framework 中啟用 TLS 1.2 支援的 Windows 更新列在如何知道您是否需要此更新一節的表格中。
問題 2
Reporting Services 組態管理員會報告下列錯誤訊息,即使用戶端提供者已更新為支援 TLS 1.2 的版本:
無法連線到伺服器:已成功建立與伺服器的連線,但在登入前交握期間發生錯誤。
若要解決此問題,請在裝載 Reporting Services 組態管理員的系統上手動建立下列登錄機碼:
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 版本列於下表中,建議您安裝本文所述的 SQL Server TLS 1.2 更新:
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 Provider:現有的連接已被遠端主機強制關閉。
當 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)>