Dela via


Kryptering och certifikatverifiering i Microsoft.Data.SqlClient

Ladda ned ADO.NET

SQL Server krypterar alltid nätverkspaket som är associerade med inloggning. Om inget certifikat har etablerats på servern när det startas genererar SQL Server ett självsignerat certifikat som används för att kryptera inloggningspaket.

På hög nivå säkerställer kryptering mellan en klient och server att data endast kan läsas av klienten och servern. En viktig del av krypteringsprocessen är verifiering av servercertifikat. Med verifiering av servercertifikat kan klienten se till att servern är den som den säger att den är. Certifikatet verifieras för saker som förfallodatum, förtroendekedja och att namnet i certifikatet matchar namnet på den server som klienten ansluter till. Mer information finns i Transport Layer Security och digitala certifikat.

Vi rekommenderar starkt att du etablerar ett verifierbart certifikat på SQL Server för säker anslutning. TLS (Transport Security Layer) kan endast göras säkert med certifikatverifiering.

Program kan begära kryptering av all nätverkstrafik med hjälp av nyckelordet för anslutningssträngen Encrypt eller anslutningsegenskapen. Som standard kräver kryptering av all nätverkstrafik för en anslutning att ett certifikat etableras på servern. Genom att ange att klienten ska lita på certifikatet på servern kan du bli sårbar för man-in-the-middle-attacker. Om du distribuerar ett verifierbart certifikat på servern kontrollerar du att klientinställningarna Encrypt är True och Trust Server Certificate att inställningarna är False.

Om du vill aktivera kryptering som ska användas när ett certifikat inte har etablerats på servern kan Encrypt klientinställningarna och Trust Server Certificate användas. I det här fallet använder kryptering ett självsignerat servercertifikat utan verifiering av klienten. Den här konfigurationen krypterar anslutningen men hindrar inte enheter mellan klienten och servern från att fånga upp anslutningen och proxya krypteringen.

Ändringar i krypterings- och certifikatverifieringsbeteende

Version 4.0 av Microsoft.Data.SqlClient introducerar icke-bakåtkompatibla ändringar i krypteringsinställningarna. Encrypt nu är standardvärdet True.

Version 2.0 av Microsoft.Data.SqlClient introducerar icke-bakåtkompatibla ändringar i inställningens Trust Server Certificate beteende. Encrypt Om det tidigare var inställt på Falseverifierades inte servercertifikatet, oavsett Trust Server Certificate inställning. Nu verifieras servercertifikatet baserat på inställningen om servern tvingar kryptering, även om Encrypt är inställt FalseTrust Server Certificate .

Version 4.0

I följande tabell beskrivs krypterings- och valideringsresultatet för krypterings- och certifikatinställningar:

Encrypt klientinställning Trust Server Certificate klientinställning Force encryption serverinställning Result
Falsk Falskt (standard) Nej Kryptering sker endast för LOGIN-paket. Certifikatet har inte verifierats.
Falsk Falskt (standard) Yes (Beteendeförändring från version 1.0 till 2.0) Kryptering av all nätverkstrafik sker endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Falsk Sann Yes Kryptering av all nätverkstrafik sker och certifikatet verifieras inte.
Sant (nytt standardvärde) Falskt (standard) N/A Kryptering av all nätverkstrafik sker endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Sant (nytt standardvärde) Sann N/A Kryptering av all nätverkstrafik sker, men certifikatet verifieras inte.
Strikt (läggs till i version 5.0) N/A N/A Kryptering av all nätverkstrafik sker endast med TDS 8.0 om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.

Försiktighet

Tabellen ovan innehåller bara en guide om systemets beteende under olika konfigurationer. För säker anslutning kontrollerar du att både klienten och servern kräver kryptering. Kontrollera också att servern har ett verifierbart certifikat och att TrustServerCertificate inställningen på klienten är inställd Falsepå .

Från och med version 5.0 av Microsoft.Data.SqlClient HostNameInCertificate är ett nytt anslutningsalternativ. Verifiering av servercertifikat säkerställer att det gemensamma namnet (CN) eller det alternativa ämnesnamnet (SAN) i certifikatet matchar servernamnet som ansluts till. I vissa fall, till exempel DNS-alias, kanske servernamnet inte matchar CN eller SAN. Värdet HostNameInCertificate kan användas för att ange ett annat, förväntat CN eller SAN i servercertifikatet.

Version 2.0

Från och med version 2.0, när servern tvingar kryptering, validerar klienten servercertifikatet baserat på Trust Server Certificate inställningen, oavsett Encrypt inställning.

I följande tabell beskrivs krypterings- och valideringsresultatet för krypterings- och certifikatinställningar:

Encrypt klientinställning Trust Server Certificate klientinställning Force encryption serverinställning Result
Falskt (standard) Falskt (standard) Nej Kryptering sker endast för LOGIN-paket. Certifikatet har inte verifierats.
Falskt (standard) Falskt (standard) Yes (Beteendeförändring) Kryptering av all nätverkstrafik sker endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Falskt (standard) Sann Yes Kryptering av all nätverkstrafik sker och certifikatet verifieras inte.
Sann Falskt (standard) N/A Kryptering av all nätverkstrafik sker endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Sann Sann N/A Kryptering av all nätverkstrafik sker, men certifikatet verifieras inte.

Försiktighet

Tabellen ovan innehåller bara en guide om systemets beteende under olika konfigurationer. För säker anslutning kontrollerar du att både klienten och servern kräver kryptering. Kontrollera också att servern har ett verifierbart certifikat och att TrustServerCertificate inställningen på klienten är inställd Falsepå .

Version 1.0

I följande tabell beskrivs krypterings- och valideringsresultatet för krypterings- och certifikatinställningar:

Encrypt klientinställning Trust Server Certificate klientinställning Force encryption serverinställning Result
Falskt (standard) Falskt (standard) Nej Kryptering sker endast för LOGIN-paket. Certifikatet har inte verifierats.
Falskt (standard) Falskt (standard) Yes Kryptering av all nätverkstrafik sker, men certifikatet verifieras inte.
Falskt (standard) Sann Yes Kryptering av all nätverkstrafik sker och certifikatet verifieras inte.
Sann Falskt (standard) N/A Kryptering av all nätverkstrafik sker endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Sann Sann N/A Kryptering av all nätverkstrafik sker, men certifikatet verifieras inte.

Se även

Anslutningssträngar
Syntax för anslutningssträng