Dela via


Kryptering och certifikatverifiering i OLE DB

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ladda ned OLE DB-drivrutins

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

Självsignerade certifikat garanterar inte säkerhet. Den krypterade handskakningen baseras på NT LAN Manager (NTLM). 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 också begära kryptering av all nätverkstrafik med hjälp av nyckelord för anslutningssträngar eller anslutningsegenskaper. Nyckelorden är "Kryptera" för OLE DB när du använder en providersträng med IDbInitialize::Initialize, eller "Använd kryptering för data" för ADO och OLE DB när du använder en initieringssträng med IDataInitialize. Kryptering kan också konfigureras på klientdatorn i registret med hjälp av alternativet Tvinga protokollkryptering . Mer information finns i Registerinställningar. Som standard kräver kryptering av all nätverkstrafik för en anslutning att ett certifikat etableras på servern. Genom att ställa in din klient så att den litar på certifikatet på servern kan du bli sårbar för man-in-the-middle-attacker. Om du distribuerar ett verifierbart certifikat på servern måste du se till att du ändrar klientinställningarna för att lita på certifikatet till FALSKT.

Information om nyckelord för anslutningssträngar finns i Använda nyckelord för anslutningssträngar med OLE DB-drivrutinen för SQL Server.

Om du vill att kryptering ska kunna användas när ett certifikat inte har etablerats på servern Force Protocol Encryption måste Trust Server Certificate och klientregistret anges. I det här fallet använder krypteringen ett självsignerat servercertifikat utan validering om inget verifierbart certifikat har etablerats på servern.

Beteende för kryptering och certifikatverifiering

Programinställningar minskar aldrig den säkerhetsnivå som anges i registret, men kan stärka den. Mer information finns i Registerinställningar. Om Force Protocol Encryption det till exempel inte har angetts för klienten kan ett program begära kryptering själv. För att garantera kryptering även när ett servercertifikat inte har etablerats kan ett program begära kryptering och aktivera TrustServerCertificate. Men om TrustServerCertificate det inte är aktiverat i klientens registerkonfiguration krävs fortfarande ett etablerat servercertifikat.

Version 19 av OLE DB-drivrutinen för SQL Server introducerar icke-bakåtkompatibla ändringar i krypteringsrelaterade API:er. Mer information finns i Ändringar av krypteringsegenskaper.

Huvudversion 19

I följande tabell beskrivs utvärderingen av krypteringsinställningarna:

Klientregisterinställning för framtvinga protokollkryptering Anslutningssträng/anslutningsattribut Kryptera/använda kryptering för data Resulterande kryptering
0 (standard) Nej/Valfritt Valfritt
0 (standard) Ja/Obligatoriskt (standard) Obligatorisk
0 (standard) Sträng Sträng
1 Nej/Valfritt Obligatorisk
1 Ja/Obligatoriskt (standard) Obligatorisk
1 Sträng Sträng
2 Ignorerad Sträng

I följande tabell beskrivs den resulterande krypteringen och verifieringen:

Kryptering Klientregisterinställning för förtroendeservercertifikat Anslutningssträng/anslutningsattribut Certifikat för förtroendeserver Resultat
Valfritt Inte tillgänglig Inte tillgänglig Kryptering sker endast för LOGIN-paket.
Obligatorisk 0 Ignorerad Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Obligatorisk 1 (standard) Nej (standard) Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Obligatorisk 1 (standard) Ja Kryptering sker alltid, men kan använda ett självsignerat servercertifikat.
Sträng Inte tillgänglig Inte tillgänglig Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.

Anmärkning

I versionerna 19.0 till 19.3 läses standardinställningen för klientregistret Trust Server Certificate från registerinställningen version 18, om den finns.

Försiktighet

Föregående tabell innehåller endast en guide om systemets beteende under olika konfigurationer. För säker anslutning kontrollerar du att både klienten och servern kräver kryptering (för konfiguration på serversidan, se Konfigurera krypteringsinställningar i SQL Server). Se också till att servern har ett verifierbart certifikat och att TrustServerCertificate inställningen på klienten är inställd på FALSE.

Anmärkning

Från och med version 19.2 av OLE DB-drivrutinen kan TDS 8.0-anslutningar konfigureras för att använda TLS 1.3. Mer information finns i TLS 1.3-stöd.

Huvudversion 18 med nya autentiseringsmetoder

För version 18.x.x, för att förbättra säkerheten, åsidosätter drivrutinen standardkrypteringsvärdet genom att ställa in det på när de nya nyckelorden för anslutningssträngen för autentisering eller yes (eller deras motsvarande egenskaper) används. Åsidosättning sker vid initieringen av datakällans objekt. Om kryptering anges före initiering på något sätt respekteras värdet och åsidosätts inte.

Anmärkning

I ADO-program och i program som hämtar IDBInitialize gränssnittet via IDataInitialize::GetDataSourceanger kärnkomponenten som implementerar gränssnittet uttryckligen kryptering till standardvärdet no. Därför respekterar de nya autentiseringsegenskaperna/nyckelorden den här inställningen och krypteringsvärdet åsidosätts inte . Därför rekommenderar vi att dessa program uttryckligen anger Use Encryption for Data=true att de åsidosätter standardvärdet.

För att förbättra säkerheten respekterar de nya autentiseringsmetoderna inställningen (och dess motsvarande nyckelord/egenskaper för anslutningssträngen TrustServerCertificate ) oberoende av klientkrypteringsinställningen. Som ett resultat valideras servercertifikatet som standard. Drivrutinen avgör om servercertifikatet ska verifieras på följande sätt:

Klientinställning för betrodd servercertifikat Anslutningssträng/anslutningsattribut Certifikat för förtroendeserver Validering av certifikat
0 Nej (standard) Ja
0 Ja Ja
1 Nej (standard) Ja
1 Ja Nej

I följande tabell beskrivs utvärderingen av krypteringsinställningarna:

Klientinställning för framtvinga protokollkryptering Anslutningssträng/anslutningsattribut Kryptera/använda kryptering för data Resulterande kryptering
0 Nej (standard) Nej
0 Ja Ja
1 Nej (standard) Ja
1 Ja Ja

I följande tabell beskrivs den resulterande krypteringen och verifieringen:

Resulterande kryptering Validering av certifikat Resultat
Nej Nej Kryptering sker endast för LOGIN-paket.
Nej Ja Kryptering sker för LOGIN-paket endast om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Ja Nej Kryptering av all nätverkstrafik sker alltid, men kan använda ett självsignerat servercertifikat.
Ja Ja Kryptering av all nätverkstrafik sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.

Huvudversion 18 med äldre autentiseringsmetoder

I följande tabell beskrivs krypterings- och valideringsresultatet för äldre autentiseringsmetoder:

Klientinställning för framtvinga protokollkryptering Klientinställning för betrodd servercertifikat Anslutningssträng/anslutningsattribut Kryptera/använda kryptering för data Anslutningssträng/anslutningsattribut Certifikat för förtroendeserver Resultat
0 Inte tillgänglig Nej (standard) Inte tillgänglig Kryptering sker endast för LOGIN-paket.
0 Inte tillgänglig Ja Nej (standard) Kryptering av all nätverkstrafik sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
0 Inte tillgänglig Ja Ja Kryptering av all nätverkstrafik sker alltid, men kan använda ett självsignerat servercertifikat.
1 0 Ignorerad Ignorerad Kryptering av all nätverkstrafik sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
1 1 Nej (standard) Inte tillgänglig Kryptering av all nätverkstrafik sker alltid, men kan använda ett självsignerat servercertifikat.
1 1 Ja Nej (standard) Kryptering av all nätverkstrafik sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
1 1 Ja Ja Kryptering av all nätverkstrafik sker alltid, men kan använda ett självsignerat servercertifikat.

Se även

OLE DB-drivrutin för SQL Server-funktioner
Egenskaper för initiering och auktorisering
Nyckelord för anslutningssträng
Större skillnader mellan olika versioner
Registerinställningar