Errore "La catena di certificati è stata rilasciata da un'autorità non attendibile" dopo l'aggiornamento delle applicazioni SNAC

Riassunto

Questo articolo illustra come risolvere gli errori di attendibilità della catena di certificati che si verificano quando si aggiornano le applicazioni di database da SQL Server Native Client 11.0 (SNAC) a Microsoft OLE DB Driver 19 o Microsoft ODBC Driver 18 per SQL Server.

Quando si esegue l'aggiornamento da SNAC 11.0 a driver più recenti, le applicazioni potrebbero non riuscire a connettersi a SQL Server con errori di attendibilità della catena di certificati. Questo problema si verifica perché i driver più recenti abilitano la crittografia per impostazione predefinita e richiedono la convalida del certificato, mentre SNAC lo ha disabilitato per impostazione predefinita. Per correggere l'errore, eseguire il provisioning di un certificato di cui il client si fida oppure modificare le impostazioni di connessione Encrypt, Use Encryption for Data o TrustServerCertificate come descritto in questo articolo.

Quale parola chiave di crittografia si applica al driver e al client

La parola chiave che controlla la crittografia dipende dal driver e dal modo in cui l'applicazione compila il relativo stringa di connessione. Se si usa una parola chiave che il driver non riconosce, la connessione non riesce con un errore "parola chiave non supportato" anziché l'errore del certificato.

Driver e metodo di connessione Parola chiave di crittografia Parola chiave attendibilità certificato
OLE DB Driver 19, stringa del provider (IDBInitialize::Initialize) Encrypt TrustServerCertificate=yes oppure no
OLE DB Driver 19, ADO o stringa di inizializzazione (IDataInitialize) Use Encryption for Data Trust Server Certificate=true oppure false
ODBC Driver 18, stringa di connessione o DSN Encrypt TrustServerCertificate=yes oppure no
  • OLE DB Driver 19: Accetta Optional, Mandatory (impostazione predefinita) e Strict. Per garantire la retrocompatibilità, accetta anche i valori della versione 18, dove no e false corrispondono a Optional, e yes e true corrispondono a Mandatory.
  • Driver ODBC 18: Accetta yes/mandatory (impostazione predefinita),/nooptional e .strict
  • Stringhe del provider: Usare TrustServerCertificate=yes o TrustServerCertificate=no.
  • Stringhe di inizializzazione e ADO: Usare Trust Server Certificate=true o Trust Server Certificate=false.
  • Modalità strict: Convalida sempre il certificato del server e ignora l'impostazione di attendibilità del certificato.

L'uso TrustServerCertificate=true di in una stringa del provider può restituire un errore di valore non valido.

Per l'elenco completo delle parole chiave, vedere Uso delle parole chiave della stringa di connessione con OLE DB Driver per SQL Server, Differenze principali tra le versioni in MSOLEDBSQL e DSN, parole chiave della stringa di connessione e attributi.

Errore, causa e soluzioni della catena di certificati per OLE DB Driver 19 e ODBC Driver 18

Selezionare la scheda relativa al driver a cui è stato eseguito l'aggiornamento. Ogni scheda mostra il messaggio di errore visualizzato, il motivo per cui si verifica e le soluzioni nell'ordine consigliato.

Dopo l'aggiornamento da SQL Server Native Client 11.0 (Provider=SQLNCLI11) a Microsoft OLE DB Driver 19 per SQL Server, i tentativi di connessione potrebbero non riuscire con il messaggio di errore seguente:

[Microsoft OLE DB Driver 19 for SQL Server]: Client non è in grado di stabilire la connessione

[Microsoft OLE DB Driver 19 for SQL Server]: Provider SSL: la catena di certificati è stata rilasciata da un'autorità non attendibile.

Causa dell'errore di attendibilità della catena di certificati durante l'aggiornamento a Microsoft OLE DB Driver 19

Questo errore indica che il computer client non è in grado di verificare l'autenticità del certificato di SQL Server perché è stato emesso da un'autorità di certificazione (CA) che il client non considera attendibile.

Questi errori si verificano se entrambe le condizioni seguenti sono vere:

  • L'impostazione Forza crittografia per l'istanza di SQL Server è impostata su No.

  • La stringa di connessione client non specifica in modo esplicito un valore per la proprietà di crittografia oppure l'opzione Crittografia non è stata impostata o aggiornata in modo esplicito nel DSN.

L'errore si verifica a causa di una modifica del comportamento predefinito dei driver client. Le versioni precedenti dei driver client presuppongono che la crittografia dei dati sia DISATTIVATa per impostazione predefinita. I nuovi driver presuppongono che questa impostazione sia impostata su ON per impostazione predefinita. Poiché la crittografia dei dati è attivata, il driver tenta di convalidare il certificato del server e non riesce.

Soluzioni per l'errore di attendibilità della catena di certificati durante l'aggiornamento a Microsoft OLE DB Driver 19

Effettuare il provisioning di un certificato TLS nell'istanza di SQL Server da un'autorità di certificazione attendibile dal client. Assicurarsi che il server fornisca tutti i certificati intermedi necessari in modo che il client possa costruire la catena fino a una CA radice attendibile. Questo approccio risolve l'errore mantenendo abilitata la crittografia e la convalida del certificato. Per altre informazioni, vedere Configurare il motore di database di SQL Server per la crittografia delle connessioni.

Considerare attendibile il certificato del server senza convalida

Se non è possibile effettuare immediatamente il provisioning di un certificato verificabile, indicare al driver di ignorare la convalida del certificato. La parola chiave usata dipende dal modo in cui l'applicazione compila il stringa di connessione:

  • In una stringa di provider, aggiungere TrustServerCertificate=yes.
  • In una stringa di inizializzazione o ADO aggiungere Trust Server Certificate=true.

Questa impostazione non attiva la crittografia da sola. Indica al driver di saltare la verifica del certificato quando la connessione è crittografata, lasciando così la connessione vulnerabile agli attacchi di tipo man-in-the-middle. Usarlo solo come misura temporanea. In Strict modalità di crittografia, il driver ignora questa impostazione e convalida sempre il certificato.

Nota

Attualmente, MSOLEDBSQL19 impedisce la creazione di server collegati senza crittografia e un certificato attendibile (un certificato autofirmato non è sufficiente). Se sono necessari server collegati, usare la versione supportata esistente di MSOLEDBSQL.

Impostare la parola chiave di crittografia su Facoltativo

Modificare l'impostazione di crittografia in modo che il driver non richieda un certificato convalidato. La parola chiave usata dipende dal modo in cui l'applicazione compila il stringa di connessione:

  • In una stringa del provider, impostare Encrypt=Optional.
  • In una stringa ADO o di inizializzazione, impostare Use Encryption for Data=Optional.

Il valore predefinito in OLE DB Driver 19 è Mandatory. Se il stringa di connessione specifica Mandatorygià , yeso true, modificare il valore in Optional. Se il stringa di connessione non specifica un valore, aggiungere la parola chiave . Questa modifica ripristina il comportamento di crittografia della versione 18 e riduce la sicurezza della connessione.

Per altre informazioni, vedere Crittografia e convalida dei certificati in OLE DB.

Usare OLE DB Driver 18.x come misura temporanea

Microsoft OLE DB Driver per SQL Server 18.x non abilita la crittografia per impostazione predefinita, quindi non è interessata da questa modifica. Considerare questa opzione come temporanea e pianificare il passaggio a OLE DB Driver 19. È possibile scaricare il driver da Note di rilascio per Microsoft OLE DB Driver per SQL Server.