"La catena di certificati è stata emessa da un'autorità non attendibile" durante la connessione di DB nel ruolo di macchina virtuale dal sito Web di Azure


192

Riscontro errore durante la connessione di MY DB che è nel ruolo di macchina virtuale (ho ruolo di macchina virtuale SQL) dal sito Web di Azure. Sia il ruolo di VM che il sito Web di Azure si trovano nella zona ovest. Sto affrontando il seguente problema:

SqlException (0x80131904): è 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.)]

Sono in grado di connettermi al mio DB tramite SSMS. La porta 1433 è aperta sul mio ruolo di VM. Cosa c'è di sbagliato nella mia connessione?

Risposte:


367

Probabilmente non hai un certificato firmato dalla CA installato nell'archivio radice attendibile della tua VM SQL.

Se Encrypt=Truenella stringa di connessione è presente, disattivarlo (non consigliato) o aggiungere quanto segue nella stringa di connessione:

TrustServerCertificate=True

SQL Server creerà un certificato autofirmato se non ne installi uno da utilizzare, ma non sarà considerato attendibile dal chiamante poiché non è firmato dalla CA, a meno che tu non dica alla stringa di connessione di fidarsi di qualsiasi server certificato da predefinito.

A lungo termine, consiglierei di sfruttare Let's Encrypt per ottenere gratuitamente un certificato firmato da un'autorità di certificazione riconosciuta e installarlo sulla VM. Non dimenticare di configurarlo per l'aggiornamento automatico. Puoi leggere ulteriori informazioni su questo argomento nei libri di SQL Server online sotto l'argomento "Gerarchia di crittografia" e "Uso della crittografia senza convalida".


1
scusa, Bad, TTrusted_Connection = False è stato impostato nella stringa di connessione. l'impostazione vera funziona per me. Grazie comunque
Zafar Yousafi il

1
@ZafarYousafi dovresti contrassegnare questa risposta come corretta.
Termato,

5
Non è consigliabile avvisare l'impostazione TrustServerCertificatesu - truequesto disabilita il controllo del certificato. Non è meglio che accontentarsi Encryptdi false!
Matt Thomas

5
Il consiglio dato "TrustServerCertificate = True" in questa risposta potrebbe far scomparire il problema, ma è un consiglio terribile. Correggi la causa, NON i sintomi. L'altra parte della risposta che suggerisce l'installazione di un certificato firmato da CA è la strada da percorrere.
Mitch Wheat,

Nelle versioni più recenti di SSMS è presente una piccola opzione denominata "Certificato del server di fiducia" nella scheda "Proprietà connessione". Il controllo di questo ragazzo ha lo stesso effetto dei comandi sopra elencati.
gwynbleidd,

87

Se stai usando SQL Management Studio, vai alle proprietà della connessione e fai clic su "Trust server certificato" Se stai usando SQL Management Studio, vai alle proprietà della connessione e fai clic su "Trust server certificato"


18
Non è un cattivo consiglio in sé. Direi che puoi usarlo quando devi collegarti a un server di sviluppo e fare il tuo lavoro, come la codifica. Come sviluppatore di software, faccio costantemente fatica con DevOps che non ha tempo per sistemare le cose rapidamente e non posso permettermi di perdere tempo prezioso contro le scadenze. La pesatura dell'esposizione dei dati disabilitando questa opzione dipende molto dal tuo ambiente, sia esso locale o remoto, come gli amministratori lo impostano, le restrizioni IP e può essere facilmente mitigato con altre soluzioni alternative. Non puoi dire che sia un cattivo consiglio senza avere un po 'di informazioni sulla tua infrastruttura.
OrizG

Mi hai appena salvato la giornata. Grazie @ ct.tan
Milinda Wickramasinghe il

@OrizG Ho un SQL Server installato su un computer locale e lo uso per progetti personali. Al momento, non voglio spendere un centesimo con esso, quindi mi sono procurato un host gratuito e ho provato a configurare il server in modo da firmare i certificati e scambiarli tra il server e i client " lo userò per accedervi. Tuttavia, a causa dell'host gratuito, non sono riuscito a farlo con Let's Encrypt. Quali sono esattamente gli svantaggi di questa soluzione, rispetto a fare correttamente lo scambio di certificati, con certificati firmati CA affidabili?
ccoutinho,

31

Se viene visualizzato questo messaggio di errore quando si tenta di connettersi tramite SSMS, aggiungere TrustServerCertificate=Truei parametri di connessione aggiuntivi.


23
Mitch, hai fatto lo stesso commento su tre risposte a questa domanda. Potrebbe essere utile per altri lettori se hai fornito alcune informazioni sostanziali o link sul perché questo è "davvero, davvero un cattivo consiglio".
Shoeless,

@Shoeless Diversi commenti sulla risposta accettata spiegano.
Tom Blodget,

4

Se si sta tentando di accedervi tramite Data Connections in Visual Studio 2015 e si ottiene l'errore sopra riportato, andare su Avanzate e impostare l' TrustServerCertificate=True errore per andare via.


9
Non è un cattivo consiglio in sé. Direi che puoi usarlo quando devi collegarti a un server di sviluppo e fare il tuo lavoro, come la codifica. Come sviluppatore di software, faccio costantemente fatica con DevOps che non ha tempo per sistemare le cose rapidamente e non posso permettermi di perdere tempo prezioso contro le scadenze. La pesatura dell'esposizione dei dati disabilitando questa opzione dipende molto dal tuo ambiente, sia esso locale o remoto, come gli amministratori lo impostano, le restrizioni IP e può essere facilmente mitigato con altre soluzioni alternative. Non puoi dire che sia un cattivo consiglio senza avere un po 'di informazioni sulla tua infrastruttura.
OrizG,

1

Sono stato colpito dallo stesso problema durante l'accesso a SQL Server da IIS. Aggiunta di TrustServerCertificate = True didnot help.

È possibile che venga visualizzato un commento nei documenti MS: assicurarsi che l'account del servizio SQL Server abbia accesso al certificato TLS in uso. (Servizio NT \ MSSQLSERVER)

Apri l'archivio personale e fai clic con il pulsante destro del mouse sul certificato -> gestisci chiavi private -> Aggiungi l'account del servizio SQL e fornisci il controllo completo.

Riavvia il servizio SQL. Ha funzionato.


0

Lo stesso può essere ottenuto dallo stesso client SMS. Basta aprire l'sms, inserire il nome del server e quindi dalle opzioni sotto l'intestazione delle proprietà di connessione assicurarsi che il certificato del server Trust sia selezionato.


0

Ho riscontrato questo problema durante l'importazione di dati Excel in SQLDatabase tramite SSMS. La soluzione è impostare TrustServerCertificate = Truenella sezione sicurezza


0

Ho riscontrato questo errore nel tentativo di eseguire il profiler, anche se la mia connessione aveva verificato il certificato del server Trust e l'ho aggiunto TrustServerCertificate=Truenella sezione Avanzate. Sono passato a un'istanza di SSMS in esecuzione come amministratore e il profiler è stato avviato senza problemi. (In precedenza avevo scoperto che quando le mie connessioni anche al locale richiedevano molto tempo per connettersi, l'esecuzione come l'amministratore ha aiutato).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.