2010-09-09 9 views
10

Sto utilizzando Encrypt=yes in una stringa di connessione SQL Server, come ho bisogno del traffico TCPIP da cifrare, ma l'apertura del collegamento ottengo un errore:Utilizzo di Encrypt = yes in una stringa di connessione Sql Server -> "provider: Provider SSL, errore: 0 - Il nome CN del certificato non corrisponde al valore passato."

A connection was successfully established with the server, but then an error 
occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - 
The certificate's CN name does not match the passed value.) 

Eventuali suggerimenti su come risolvere questo problema? Presumo che ho bisogno di una sorta di relazione di certificato tra i miei server, ma non ho idea di dove cominciare.

Ho bisogno di questo per due connessioni, una per server SQL 2000 e una per server 2005.

risposta

6

Mi rendo conto che questo è piuttosto vecchio, ma pensavo che questo potesse ancora aiutare qualcuno.

Se il server a cui ci si connette non ha un certificato installato, viene generato un numero di certificato predefinito ogni volta che viene riavviato il server. Quando questo accade, il numero CN cambia e potrebbe non corrispondere a quello che hai.

Ho letto questo di recente, ma sto ancora cercando di trovare il collegamento per voi. Ti suggerisco di assicurarti che il server a cui ti stai collegando abbia installato esplicitamente un certificato e che anche il tuo client lo abbia.

L'aggiornerò non appena troverò il collegamento.

+1

mi rendo conto che sono un po 'in ritardo alla festa, ma se qualcuno ha bisogno ancora la fonte di queste informazioni si può andare qui https: // technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx – Ceisc

22

la connessione al database può essere configurato per crittografare traffico e di accettare qualsiasi certificato dal server. Non una soluzione grandiosa, ma ha funzionato per me.

La stringa di connessione risultante dovrebbe essere simile a questo:

"[...];Encrypt=True;TrustServerCertificate=True" 
+3

Infatti. Un'aggiunta secondaria: a partire da .NET Framework 4.5, quando ** TrustServerCertificate ** è falso e ** Encrypt ** è true, il nome del server (o l'indirizzo IP) in un certificato SSL di SQL Server deve corrispondere esattamente al nome del server (o Indirizzo IP) specificato nella stringa di connessione. Altrimenti, il tentativo di connessione fallirà. [Maggiori informazioni su MSDN] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring (v = vs.110) .aspx) –

+1

Non impostare trustServerCertificate = true sempre in DIRETTA. C'è un'altra proprietà di connessione '' '" hostNameInCertificate "' '' che puoi usare. Fare riferimento a [questo Microsoft Doc] (https://docs.microsoft.com/en-us/sql/connect/jdbc/connecting-with-ssl-encryption) –

Problemi correlati