Dela via


Använda kryptering utan validering i den interna SQL Server-klienten

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

Viktigt!

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande drivrutiner för nya projekt:

För SQLNCLI som levereras som en komponent i SQL Server-databasmotorn (versioner 2012 till och med 2019), se det här Support Lifecycle-undantag.

SQL Server krypterar alltid nätverkspaket som är associerade med inloggning. Om inget certifikat etablerades på servern när det 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). Du bör etablera 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 "Encrypt" för ODBC och 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. Detta kan också konfigureras av SQL Server Configuration Manager med alternativet Force Protocol Encryption och genom att konfigurera klienten för att begära krypterade anslutningar. 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 är du sårbar för man-in-the-middle-attacker. Om du distribuerar ett verifierbart certifikat på servern kontrollerar du att du ändrar klientinställningarna för att lita på certifikatet till FALSE.

Information om nyckelord för anslutningssträngar finns i Använda nyckelord för anslutningssträngar med SQL Server Native Client.

Om du vill aktivera kryptering som ska användas när ett certifikat inte etableras på servern kan SQL Server Configuration Manager användas för att ange både alternativ för Force Protocol Encryption och Trust Server Certificate . I det här fallet använder kryptering ett självsignerat servercertifikat utan validering om inget verifierbart certifikat har etablerats på servern.

Program kan också använda nyckelordet TrustServerCertificate eller dess associerade anslutningsattribut för att garantera att kryptering sker. Programinställningar minskar aldrig den säkerhetsnivå som angetts av SQL Server Client Configuration Manager, men kan stärka den. Om till exempel Force Protocol Encryption inte har angetts för klienten kan ett program begära själva krypteringen. För att garantera kryptering även när ett servercertifikat inte har etablerats kan ett program begära kryptering och TrustServerCertificate. Men om TrustServerCertificate inte är aktiverat i klientkonfigurationen krävs fortfarande ett etablerat servercertifikat. I följande tabell beskrivs alla fall:

Tvinga protokollkrypteringsklientinställning 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
Nej Inte tillgänglig Nej (standard) Ignorerad Ingen kryptering sker.
Nej Inte tillgänglig Ja Nej (standard) Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Nej Inte tillgänglig Ja Ja Kryptering sker alltid, men kan använda ett självsignerat servercertifikat.
Ja Nej Ignorerad Ignorerad Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Ja Ja Nej (standard) Ignorerad Kryptering sker alltid, men kan använda ett självsignerat servercertifikat.
Ja Ja Ja Nej (standard) Kryptering sker bara om det finns ett verifierbart servercertifikat, annars misslyckas anslutningsförsöket.
Ja Ja Ja Ja Kryptering sker alltid, men kan använda ett självsignerat servercertifikat.

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. Kontrollera också att servern har ett verifierbart certifikat och att TrustServerCertificate inställningen på klienten är inställd FALSEpå .

SQL Server Native Client OLE DB-provider

SQL Server Native Client OLE DB-providern stöder kryptering utan validering genom att lägga till initieringsegenskapen SSPROP_INIT_TRUST_SERVER_CERTIFICATE för datakällan, som implementeras i egenskapsuppsättningen DBPROPSET_SQLSERVERDBINIT . Dessutom har ett nytt nyckelord för anslutningssträngen, TrustServerCertificate, lagts till. Det accepterar yes eller no värden, no är standardvärdet. När du använder tjänstkomponenter godkänns true eller false värden, false är standardvärdet.

Mer information om förbättringar av egenskapsuppsättningen DBPROPSET_SQLSERVERDBINIT finns i Initierings- och auktoriseringsegenskaper (OLE DB-provider för intern klient).

SQL Server Native Client ODBC-drivrutin

SQL Server Native Client ODBC-drivrutinen stöder kryptering utan validering genom tillägg till funktionerna SQLSetConnectAttr och SQLGetConnectAttr . SQL_COPT_SS_TRUST_SERVER_CERTIFICATE har lagts till för att acceptera antingen SQL_TRUST_SERVER_CERTIFICATE_YES eller SQL_TRUST_SERVER_CERTIFICATE_NO, med SQL_TRUST_SERVER_CERTIFICATE_NO standardvärdet. Dessutom har ett nytt nyckelord för anslutningssträngen, TrustServerCertificate, lagts till. Det accepterar yes eller no värden, no är standardvärdet.