Errore "Il certificato ricevuto dal server remoto è stato emesso da un'autorità di certificazione non attendibile" quando ci si connette a SQL Server
Questo articolo consente di risolvere il problema che si verifica quando si tenta di stabilire una connessione crittografata a SQL Server.
Versione originale del prodotto: SQL Server
Numero KB originale: 2007728
Sintomi
Quando ci si connette a SQL Server, è possibile che venga visualizzato il messaggio di errore seguente:
È stata stabilita una connessione con il server, ma si è verificato un errore durante il processo di accesso. (provider: Provider SSL, errore: 0 - La catena di certificati è stata emessa da un'autorità non attendibile. (Provider di dati .Net SqlClient)
Inoltre, nel registro eventi del sistema Windows viene registrato il messaggio di errore seguente.
Log Name: System
Source: Schannel
Date: 10/13/2020 3:03:31 PM
Event ID: 36882
Task Category: None
Level: Error
Keywords:
User: USERNAME
Computer: COMPUTERNAME
Description:
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.
Causa
Questo errore si verifica quando si tenta di stabilire una connessione crittografata a SQL Server utilizzando un certificato non verificabile. Questo può accadere negli scenari seguenti:
Scenario | Modello di crittografia lato server | crittografia lato client | Tipo di certificato | Autorità emittente di certificati presente nell'archivio delle Autorità di certificazione radice attendibili |
---|---|---|---|---|
1 | Sì | No | Si effettua il provisioning di un certificato da un'origine non attendibile (l'autorità emittente del certificato non è elencata come autorità attendibile nelle autorità di certificazione radice attendibili nel computer client) | No |
2 | Disattivato | Sì | Certificato SQL Server generato automaticamente | I certificati autofirmato non vengono visualizzati in questo archivio. |
Quando si stabiliscono connessioni crittografate a SQL Server, Il canale sicuro (Schannel) crea l'elenco delle autorità di certificazione attendibili eseguendo una ricerca nell'archivio delle Autorità di certificazione radice attendibili nel computer locale. Durante l'handshake TLS, il server invia il certificato di chiave pubblica al client. L'emittente di un certificato a chiave pubblica è noto come Autorità di certificazione (CA). Il client deve assicurarsi che l'autorità di certificazione sia attendibile dal client. Ciò è possibile conoscendo in anticipo la chiave pubblica delle CA attendibili. Quando Schannel rileva un certificato emesso da un'autorità di certificazione non attendibile, ad esempio nei due casi precedenti, viene visualizzato il messaggio di errore elencato nella sezione Sintomi .
Risoluzione
Se si utilizza intenzionalmente un certificato di un'autorità non attendibile o un certificato autofirmato per crittografare le connessioni a SQL Server, è possibile utilizzare una delle opzioni seguenti:
Per lo scenario 1, aggiungere l'autorità di certificazione all'archivio Autorità di certificazione radice attendibili nel computer client che avvia la connessione crittografata. A tale scopo, completare le procedure Esporta il certificato del server e Installa l'autorità di certificazione radice (CA) nelle procedure del computer client elencate nelle sezioni successive di tale sequenza.
Esportare il certificato del server
Nell'esempio viene utilizzato un file denominato caCert.cer come file di certificato. È necessario ottenere questo file di certificato dal server. I passaggi seguenti illustrano come esportare il certificato del server in un file:
Fare clic sul pulsante Start, scegliere Esegui e quindi digitare MMC. MMC è l'acronimo di Microsoft Management Console.
In MMC, aprire Certificati.
Espandere Personale, quindi Certificati.
Fare clic con il pulsante destro del mouse sul certificato del server e quindi scegliere Tutte le attività-Esporta>.
Fare clic su Avanti per andare oltre la finestra di benvenuto della procedura guidata per l'Esportazione certificati.
Verificare che No, non esportare la chiave privata sia selezionata e quindi selezionare Avanti.
Assicurarsi che il file binario con codifica DER X.509 (.CER) oppure con codifica Base-64 X.509 (.CER) sia selezionato e quindi fare clic su Avanti.
Immettere un nome del file di esportazione.
Fare clic su Avanti e quindi su Fine per esportare il certificato.
Installare l'autorità di certificazione (CA) radice nel computer client
Nel computer client, avviare lo snap-in Certificati per MMC e quindi aggiungere lo snap-in Certificati.
Nella finestra di dialogo Snap-in Certificati selezionare Account computer e quindi selezionare Avanti.
Nel riquadro Seleziona computer selezionare Computer locale: (il computer in cui è in esecuzione la console) e quindi selezionare Fine.
Scegliere OK per chiudere la finestra di dialogo Aggiungi o Rimuovi snap-in .
Nel riquadro sinistro di MMC espandere il nodo Certificati (computer locale).
Espandere il nodo Autorità di certificazione radice attendibili, fare clic con il pulsante destro del mouse sulla sottocartella Certificati , selezionare Tutte le attività e quindi selezionare Importa.
Nella pagina iniziale della Procedura guidata importazione certificati selezionare Avanti.
Nella pagina File da importare selezionare Sfoglia.
Passare al percorso del file del certificato caCert.cer , selezionare il file e quindi selezionare Apri.
Nella pagina File da importare selezionare Avanti.
Nella pagina Archivio certificati accettare la selezione predefinita e quindi selezionare Avanti.
Nella pagina Completamento importazione guidata certificati selezionare Fine.
Per gli scenari 1 e 2, impostare Attendibilità certificato server su true nell'applicazione client.
Per altre informazioni su come eseguire questa operazione, vedere gli argomenti seguenti:
Utilizzo della crittografia senza convalida in SQL Server Native Client
Connessione con la crittografia tramite il driver Microsoft JDBC per SQL Server
Note
Se ci si connette a SQL Server con SQL Server Management Studio, selezionare la scheda Opzioni nella finestra Connetti al server e quindi selezionare l'opzione Considera attendibile il certificato del server.
Attenzione: le connessioni SSL crittografate tramite un certificato autofirmato non offrono una sicurezza avanzata. Sono soggette ad attacchi man-in-the-middle
. Non è consigliabile basarsi su SSL utilizzando certificati autofirmati in un ambiente di produzione oppure su server connessi a Internet.
Se la configurazione illustrata nelle sezioni precedenti di questo articolo non è voluta, è possibile utilizzare una delle opzioni seguenti per risolvere il problema:
Configurare il motore di database per l'utilizzo della crittografia in base alla procedura descritta in "Abilitare le connessioni crittografate nel Motore di database"
Se la crittografia non è necessaria:
Disabilitare le eventuali impostazioni di crittografia nell'applicazione client.
Disabilitare la crittografia lato server utilizzando Gestione configurazione SQL Server. Per altre informazioni su come eseguire questa operazione, vedere Configurare il server.