Supporto di TLS 1.2 per Microsoft SQL Server

Si applica a: SQL Server
Numero KB originale: 3135244

Sommario

Questo articolo descrive il supporto di TLS 1.2 per Microsoft SQL Server. Elenca le build di SQL Server che abilitano TLS 1.2 sul lato server, i driver client e i provider che supportano TLS 1.2, gli aggiornamenti di .NET Framework da cui dipendono le funzionalità di SQL Server e gli errori più comuni che possono verificarsi quando è richiesto TLS 1.2 ma i componenti non sono aggiornati. SQL Server 2016, SQL Server 2017, SQL Server 2019 e SQL Server 2022 supportano TLS 1.2 in modo nativo e non richiedono un aggiornamento separato. Le versioni out-of-mainstream (SQL Server 2008, 2008 R2, 2012 e 2014) richiedono gli aggiornamenti elencati nelle tabelle seguenti.

Esistono vulnerabilità note per Secure Sockets Layer (SSL) e versioni precedenti di Transport Layer Security (TLS). Usare TLS 1.2 (o TLS 1.3, se supportato) per la comunicazione sicura. Nelle versioni correnti Windows client e Windows Server, TLS 1.0 e TLS 1.1 sono disabilitati per impostazione predefinita, quindi i componenti client e server devono supportare TLS 1.2 o versione successiva per la connessione.

Importante

Non esistono vulnerabilità note per l'implementazione TDS Microsoft, ovvero il protocollo usato tra i client SQL Server e il motore di database SQL Server. Per informazioni generali sull'implementazione Schannel di TLS 1.0, vedere l'avviso di sicurezza Windows dal 24 novembre 2015.

Controllare se è necessario questo aggiornamento

Usare la tabella seguente per verificare se la versione corrente di SQL Server supporta già TLS 1.2 o se è necessario installare un aggiornamento per abilitare il supporto tls 1.2. Usare i collegamenti di download nella tabella per ottenere gli aggiornamenti del server applicabili all'ambiente.

Nota

Le compilazioni successive a quelle elencate in questa tabella supportano anche TLS 1.2.

Versione di SQL Server Build/rilascio iniziale che supportava TLS 1.2 Aggiornamenti correnti con il supporto di TLS 1.2 Informazioni aggiuntive
SQL Server 2014 SP1 CU 12.0.4439.1

SP1 CU5
KB3130926 - Aggiornamento cumulativo 5 per SQL Server 2014 SP1

Nota: KB3130926 ora installa l'ultimo CU prodotto per 2014 SP1 (CU13 - KB4019099), che include il supporto TLS 1.2 e tutti gli hotfix rilasciati fino a oggi. Se necessario, CU5 è disponibile nel catalogo di Windows Update.

Nota: il supporto di TLS 1.2 è disponibile anche in 2014 SP2 e 2014 SP3.
KB3052404 - FIX: non è possibile usare il protocollo Transport Layer Security versione 1.2 per connettersi a un server che esegue SQL Server 2014 o SQL Server 2012
SQL Server 2014 SP1 GDR 12.0.4219.0

Aggiornamento di SP1 GDR TLS 1.2
Il supporto tls 1.2 per GDR 2014 SP1 è disponibile nell'ultimo aggiornamento cumulativo GDR- KB4019091.

Nota: il supporto di TLS 1.2 è disponibile anche in 2014 SP2 e 2014 SP3.
SQL Server 2014 RTM CU 12.0.2564.0

RTM CU12
KB3130923 - Aggiornamento cumulativo 12 per SQL Server 2014

Nota: KB3130923 ora installa l'ultimo CU rilasciato per 2014 RTM (CU14 - KB3158271 ), che include il supporto tls 1.2 e tutti gli hotfix rilasciati fino a oggi. Se necessario, CU12 è disponibile nel catalogo di Windows Update.

Nota: il supporto di TLS 1.2 è disponibile anche in 2014 SP2 e 2014 SP3.
KB3052404 - FIX: non è possibile usare il protocollo Transport Layer Security versione 1.2 per connettersi a un server che esegue SQL Server 2014 o SQL Server 2012
SQL Server 2014 RTM GDR 12.0.2271.0

Aggiornamento di RTM GDR TLS 1.2
Il supporto TLS per SQL 2014 RTM è attualmente disponibile solo installando 2014 SP2 e 2014 SP3.
SQL Server 2012 SP3 GDR 11.0.6216.27

Aggiornamento di SP3 GDR TLS 1.2
Descrizione dell'aggiornamento della sicurezza per SQL Server 2012 SP3 GDR: 16 gennaio 2018

Nota: il supporto di TLS 1.2 è disponibile anche in 2012 SP4.
SQL Server 2012 SP3 CU 11.0.6518.0

SP1 CU3
KB3123299 - Aggiornamento cumulativo 1 per SQL Server 2012 SP3

Nota: KB3123299 ora installa l'ultimo CU rilasciato per 2012 SP3 (CU10 - KB4025925, che include il supporto tls 1.2 e tutti gli hotfix rilasciati fino alla data). Se necessario, CU1 è disponibile nel catalogo di Windows Update.

Nota: il supporto di TLS 1.2 è disponibile anche in 2012 SP4.
KB3052404 - FIX: non è possibile usare il protocollo Transport Layer Security versione 1.2 per connettersi a un server che esegue SQL Server 2014 o SQL Server 2012
SQL Server 2012 SP2 GDR 11.0.5352.0

Aggiornamento di SP2 GDR TLS 1.2
Il supporto tls 1.2 per GDR 2012 SP2 è disponibile nell'ultimo aggiornamento cumulativo GDR - KB3194719.

Il supporto di TLS 1.2 è disponibile anche in 2012 SP3 e 2012 SP4.
SQL Server 2012 SP2 CU 11.0.5644.2

SP2 CU10
KB3120313 - Aggiornamento cumulativo 10 per SQL Server 2012 SP2.

Nota: KB3120313 ora installa l'ultimo CU rilasciato per 2012 SP2 (CU16 - KB3205054, che include il supporto TLS 1.2 e tutti gli hotfix rilasciati fino alla data). Se necessario, CU1 è disponibile nel catalogo di Windows Update.

Nota: il supporto di TLS 1.2 è disponibile anche in 2012 SP3 e 2012 SP4.
KB3052404 - FIX: non è possibile usare il protocollo Transport Layer Security versione 1.2 per connettersi a un server che esegue SQL Server 2014 o SQL Server 2012
SQL Server 2008 R2 SP3 (solo x86/x64) 10.50.6542.0

Aggiornamento di SP2 TLS 1.2
Il supporto di TLS 1.2 è disponibile nell'aggiornamento cumulativo più recente per SQL Server 2008 R2 SP3 - KB4057113.
SQL Server 2008 R2 SP2 GDR (solo IA-64) 10.50.4047.0

Aggiornamento di SP2 TLS 1.2
Aggiornamenti di SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2
SQL Server 2008 R2 SP2 CU (solo IA-64) 10.50.4344.0

Aggiornamento di SP2 TLS 1.2
Aggiornamenti di SQL Server 2008 R2 SP2 GDR (IA-64) TLS 1.2
SQL Server 2008 SP4 (solo x86/x64) 10.0.6547.0

Aggiornamento di SP4 TLS 1.2
Il supporto di TLS 1.2 è disponibile nell'aggiornamento cumulativo più recente per SQL Server 2008 SP4 - KB4057114(solo x86/x64).
SQL Server 2008 SP3 GDR (solo IA-64) 10.0.5545.0

Aggiornamento di SP3 TLS 1.2
Aggiornamenti di SQL Server 2008 SP3 GDR (IA-64) TLS 1.2
SQL Server 2008 SP3 CU (solo IA-64) 10.0.5896.0

Aggiornamento di SP3 TLS 1.2
Aggiornamenti di SQL Server 2008 SP3 CU (IA-64) TLS 1.2

Download dei componenti client

Usare la tabella seguente per scaricare i componenti client e gli aggiornamenti dei driver applicabili all'ambiente in uso.

Componente client o driver Aggiornamenti con il supporto di TLS 1.2
SQL Server Native Client 10.0 per SQL Server 2008/2008 R2 (x86/x64/IA64) Microsoft SQL Server 2008 e SQL Server 2008 R2 Native Client
SQL Server Native Client 11.0 per SQL Server 2012/2014 (x86/x64) Microsoft SQL Server 2012 Native Client - QFE
Componenti client MDAC (Sqlsrv32.dll e Sqloledb.dll) Aggiornamento dello stack di manutenzione per Windows 10 versione 1809: 10 novembre 2020

Supporto di driver client e provider per TLS 1.2

La tabella seguente riepiloga il supporto di TLS 1.2 tra driver e provider SQL Server:

Driver Supporto di TLS 1.2 Nota
Microsoft ODBC Driver per SQL Server 11 Sì, con aggiornamenti Installare l'aggiornamento cumulativo più recente per SQL Server 2012 o SQL Server 2014. Vedere la tabella nella sezione Controllare se è necessario questo aggiornamento .
Microsoft ODBC Driver per SQL Server 13 Supporta TLS 1.2 in modo nativo.
Microsoft ODBC Driver per SQL Server 17 Supporta TLS 1.2 in modo nativo.
Microsoft ODBC Driver per SQL Server 18 Supporta TLS 1.2 in modo nativo.
Microsoft OLE DB Driver per SQL Server 19 (MSOLEDBSQL) Supporta TLS 1.2 in modo nativo.
SQL Server Native Client 10 Sì, con aggiornamenti Installare l'aggiornamento cumulativo più recente per SQL Server 2008 o SQL Server 2008 R2. Vedere la tabella nella sezione Controllare se è necessario questo aggiornamento .
SQL Server Native Client 11 Sì, con aggiornamenti Installare l'aggiornamento cumulativo più recente per SQL Server 2012 o SQL Server 2014. Vedere la tabella nella sezione Controllare se è necessario questo aggiornamento .
Driver ODBC di SQL Server (SQLSRV32.DLL) Sì, per alcuni sistemi operativi Aggiunto il supporto per Windows Server 2019 e Windows 10. Le versioni precedenti del sistema operativo non lo supportano.
Provider OLE DB di SQL Server (SQLOLEDB) Sì, per alcuni sistemi operativi È stato aggiunto il supporto per Windows Server 2019 e Windows 10. Le versioni precedenti del sistema operativo non lo supportano.

Altre correzioni necessarie per SQL Server per l'uso di TLS 1.2

Installare i seguenti pacchetti cumulativi di hotfix .NET per consentire alle funzionalità di SQL Server che si basano sugli endpoint .NET di usare TLS 1.2. Gli esempi includono Posta elettronica database e componenti SSIS come l'attività Servizio Web.

Sistema operativo Versione di .NET Framework Aggiornamenti con il supporto di TLS 1.2
Windows 7 Service Pack 1, Windows 2008 R2 Service Pack 1 3.5.1 Supporto per TLS v1.2 incluso in .NET Framework versione 3.5.1
Windows 8 RTM, Windows 2012 RTM 3.5 Supporto per TLS v1.2 incluso in .NET Framework versione 3.5
Windows 8.1, Windows 2012 R2 SP1 3.5 SP1 Supporto per TLS v1.2 incluso nel .NET Framework versione 3.5 SP1 su Windows 8.1 e Windows Server 2012 R2

Domande frequenti

SQL Server 2016 e le versioni successive supportano TLS 1.1?

SQL Server 2016, SQL Server 2017 su Windows, SQL Server 2019 su Windows e SQL Server 2022 supportano TLS 1.0 fino a TLS 1.2. Le versioni TLS effettivamente usate dai client dipendono da ciò che il sistema operativo Windows sottostante abilita. Nelle versioni correnti Windows, TLS 1.0 e TLS 1.1 sono disabilitati per impostazione predefinita. Se si vuole consentire solo TLS 1.2 (o versione successiva), disabilitare i protocolli meno recenti in Schannel.

SQL Server 2019 consente connessioni che usano TLS 1.0 o 1.1 o solo 1.2?

SQL Server 2019 ha lo stesso livello di supporto TLS di SQL Server 2016 e SQL Server 2017. SQL Server 2019 RTM viene fornito con il supporto TLS 1.2 e non è necessario alcun altro aggiornamento o correzione per abilitarlo. Le impostazioni di Schannel nel sistema operativo controllano quali versioni di TLS i client possono effettivamente utilizzare.

TDS è interessato da vulnerabilità note?

Non esistono vulnerabilità note per l'implementazione Microsoft TDS. Poiché diverse organizzazioni di imposizione degli standard impongono l'uso di TLS 1.2 per i canali di comunicazione crittografati, Microsoft rilascia il supporto per TLS 1.2 per la vasta base di installazione di SQL Server.

In che modo Microsoft distribuire gli aggiornamenti tls 1.2 ai clienti?

Questo articolo fornisce collegamenti di download per gli aggiornamenti del server e client appropriati che supportano TLS 1.2.

TLS 1.2 supporta SQL Server 2005?

Il supporto di TLS 1.2 è disponibile solo per SQL Server 2008 e versioni successive.

I clienti che non usano SSL/TLS sono interessati se SSL 3.0 e TLS 1.0 sono disabilitati nel server?

Sì. SQL Server crittografa il nome utente e la password durante l'autenticazione anche quando non viene usato un canale di comunicazione sicuro. L'aggiornamento TLS 1.2 è necessario per qualsiasi istanza di SQL Server in cui l'unico protocollo abilitato nel server è TLS 1.2.

Quali versioni di Windows Server supportano TLS 1.2?

Windows Server 2008 R2 e versioni successive supportano TLS 1.2.

Qual è l'impostazione corretta del Registro di sistema per abilitare TLS 1.2 per la comunicazione SQL Server?

Le impostazioni corrette del Registro di sistema sono le seguenti:

  • [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

Queste impostazioni sono necessarie sia per i computer server che per i computer client. Le DisabledByDefault impostazioni e Enabled devono essere create nei client Windows 7 e nei server Windows Server 2008 R2. In Windows 8 e versioni successive dei sistemi operativi client o del server Windows Server 2012 e versioni successive dei sistemi operativi server, TLS 1.2 dovrebbe essere già abilitato. Se si implementa un criterio di distribuzione per il Registro di sistema di Windows che deve essere indipendente dalla versione del sistema operativo, aggiungi al criterio le chiavi del Registro di sistema indicate.

Inoltre, se si usa Posta elettronica database in SQL Server, è anche necessario impostare le chiavi del Registro di sistema .NET seguenti:

  • [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

Problemi noti

SSMS, Server di report e Gestione report non è in grado di connettersi dopo aver applicato la correzione TLS 1.2

SQL Server Management Studio (SSMS), Server di report e Gestione report non si connettono al motore di database dopo aver applicato la correzione per SQL Server 2008, 2008 R2, 2012 o 2014. Server di report e Gestione report hanno esito negativo e restituiscono il messaggio di errore seguente:

Il server di report non può stabilire una connessione al database del server di report. È necessaria una connessione al database per tutte le richieste e le elaborazioni. (rsReportServerDatabaseUnavailable)

Questo problema si verifica perché SSMS, Report Manager e Gestione configurazione di Reporting Services usano ADO.NET e il supporto di ADO.NET per TLS 1.2 è disponibile solo nel .NET Framework 4.6. Per le versioni precedenti di .NET Framework, è necessario applicare un aggiornamento Windows in modo che ADO.NET possa supportare le comunicazioni TLS 1.2 per il client. Gli aggiornamenti Windows che abilitano il supporto tls 1.2 nelle versioni precedenti del framework di .NET sono elencati nella tabella nella sezione Controllare se è necessario questo aggiornamento sezione.

Reporting Services Gestione configurazione: handshake preliminare all'accesso non riuscito

Reporting Services Gestione configurazione segnala il seguente messaggio di errore anche dopo l'aggiornamento dei provider client a una versione che supporta TLS 1.2:

Impossibile connettersi al server: è stata stabilita una connessione al server, ma si è verificato un errore durante l'handshake di pre-accesso.

Screenshot di un errore di connessione di test dopo l'aggiornamento dei provider client a una versione che supporta TLS 1.2.

Per risolvere questo problema, creare manualmente la chiave del Registro di sistema seguente nel sistema che ospita il Reporting Services Gestione configurazione:

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

La comunicazione endpoint crittografata non riesce per i gruppi di disponibilità, Database Mirroring o Service Broker

La comunicazione dell'endpoint crittografato che usa TLS 1.2 ha esito negativo quando si usano comunicazioni crittografate per i gruppi di disponibilità, il mirroring del database o Service Broker in SQL Server. Nel log degli errori SQL viene registrato un messaggio di errore simile al seguente:

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.

Per altre informazioni su questo problema, vedere FIX: La comunicazione dell'endpoint crittografato con TLS 1.2 ha esito negativo quando si usa SQL Server.

Errori durante l'installazione di SQL Server 2012 o 2014 con TLS 1.2 abilitato

Si verificano errori diversi quando si tenta di installare SQL Server 2012 o SQL Server 2014 in un server con TLS 1.2 abilitato.

Per ulteriori informazioni, vedere Correzione: errore durante l'installazione di SQL Server 2012 o SQL Server 2014 in un server in cui TLS 1.2 è abilitato.

La connessione crittografata per il mirroring del database o i gruppi di disponibilità non va a buon fine con un certificato MD5

Una connessione crittografata con il mirroring del database o i gruppi di disponibilità non funziona quando si usa un certificato dopo aver disabilitato tutti gli altri protocolli diversi da TLS 1.2. È possibile che venga visualizzato uno o entrambi i messaggi di errore seguenti.

Nel log degli errori di SQL Server viene registrato un messaggio di errore simile al seguente:

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.'

Nel registro eventi di Windows viene registrato un messaggio di errore simile al seguente:

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.

Questo problema si verifica perché i gruppi di disponibilità e il mirroring del database richiedono un certificato che non usa algoritmi hash a lunghezza fissa, ad esempio MD5. Gli algoritmi hash a lunghezza fissa non sono supportati in TLS 1.2.

Per ulteriori informazioni, vedere FIX: La comunicazione tramite l'algoritmo hash MD5 ha esito negativo se SQL Server usa TLS 1.2.

Terminazione intermittente del servizio SQL Server SQL Server 2008 e 2008 R2

Le versioni del motore di database di SQL Server seguenti sono interessate dal problema di terminazione intermittente del servizio segnalato nell'articolo della Knowledge Base 3146034. Per proteggersi dal problema di terminazione del servizio, installare gli aggiornamenti di TLS 1.2 per SQL Server menzionati in questo articolo se la versione SQL Server è elencata nella tabella seguente:

Versione di SQL Server Versione interessata
SQL Server 2008 R2 SP3 (x86 e x64) 10.50.6537.0
SQL Server 2008 R2 SP2 GDR (solo IA-64) 10.50.4046.0
SQL Server 2008 R2 SP2 (solo IA-64) 10.50.4343.0
SQL Server 2008 SP4 (x86 e x64) 10.0.6543.0
SQL Server 2008 SP3 GDR (solo IA-64) 10.0.5544.0
SQL Server 2008 SP3 (solo IA-64) 10.0.5894.0

Posta elettronica database non funziona con TLS 1.2

Posta elettronica database non riesce con il seguente errore:

Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException: impossibile leggere le informazioni di configurazione della posta elettronica dal database. Impossibile avviare la sessione di posta elettronica.

Per altre informazioni, vedere Altre correzioni necessarie affinché SQL Server possa usare TLS 1.2.

SCCM non è in grado di connettersi a SQL Server dopo l'abilitazione di TLS 1.2

System Center Configuration Manager (SCCM) non riesce a connettersi a SQL Server dopo l'abilitazione del protocollo TLS 1.2 in SQL Server. In questo caso viene visualizzato il seguente messaggio di errore:

Provider TCP: Una connessione esistente è stata chiusa forzatamente dall'host remoto

Questo problema può verificarsi quando SCCM usa un driver SQL Server Native Client che non ha una correzione. Per risolvere questo problema, scaricare e installare la correzione client elencata nella sezione Download dei componenti client . Ad esempio, Microsoft SQL Server 2012 Native Client - QFE.

È possibile individuare il driver usato da SCCM per connettersi a SQL Server visualizzando il log SCCM, come illustrato nell'esempio seguente:

[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)>