Share via


Verschlüsselungs- und Zertifikatüberprüfung in OLE DB

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

OLE DB-Treiber herunterladen

SQL Server verschlüsselt stets Netzwerkpakete, die mit der Anmeldung verbunden sind. Wenn auf dem Server beim Start kein Zertifikat bereitgestellt wird, erstellt SQL Server ein selbstsigniertes Zertifikat, mit dem Anmeldungspakete verschlüsselt werden.

Bei selbstsignierten Zertifikaten kann die Sicherheit nicht garantiert werden. Der verschlüsselte Handshake basiert auf dem Windows NT-LAN-Manager (NTLM). Sie sollten für eine sichere Konnektivität unbedingt ein verifizierbares Zertifikat für SQL Server bereitstellen. Transport Layer Security (TLS) kann nur mit einer Zertifikatüberprüfung gesichert werden.

Anwendungen erfordern möglicherweise auch die Verschlüsselung des gesamten Netzwerkdatenverkehrs mit Verbindungszeichenfolgenschlüsselwörtern oder Verbindungseigenschaften. Die Schlüsselwörter lauten „Encrypt“ für OLE DB, wenn eine Anbieterzeichenfolge mit IDbInitialize::Initialize verwendet wird, oder „Use Encryption for Data“ für ADO und OLE DB, wenn eine Initialisierungszeichenfolge mit IDataInitialize verwendet wird. Die Verschlüsselung kann auch auf dem Clientcomputer in der Registrierung konfiguriert werden, indem Sie die Option Protokollverschlüsselung erzwingen verwenden. Weitere Informationen finden Sie unter Registrierungseinstellungen. Standardmäßig ist für die Verschlüsselung des Netzwerkverkehrs über eine Verbindung die Bereitstellung eines Zertifikats auf dem Server erforderlich. Wenn Sie festlegen, dass Ihr Client dem Zertifikat auf dem Server vertraut, werden Sie möglicherweise anfällig für Man-in-the-Middle-Angriffe. Wenn Sie ein verifizierbares Zertifikat auf dem Server bereitstellen, sollten Sie die Vertrauenseinstellungen des Clients für das Zertifikat in FALSE ändern.

Weitere Informationen zu Verbindungszeichenfolgen-Schlüsselwörtern finden Sie unter Verwenden von Verbindungszeichenfolgen-Schlüsselwörtern mit dem OLE DB-Treiber für SQL Server.

Um die Verschlüsselung zu aktivieren, die verwendet werden soll, wenn kein Zertifikat auf dem Server bereitgestellt wurde, können die Client-RegistrierungseinstellungenForce Protocol Encryption und Trust Server Certificate festgelegt werden. In diesem Fall wird bei der Verschlüsselung ein selbstsigniertes Serverzertifikat ohne Überprüfung verwendet, wenn kein überprüfbares Zertifikat auf dem Server bereitgestellt wurde.

Verschlüsselungs- und Zertifikatüberprüfungsverhalten

Anwendungseinstellungen senken nicht die in der Registrierung festgelegte Sicherheitsstufe, vielmehr stärken sie sie. Weitere Informationen finden Sie unter Registrierungseinstellungen. Wenn beispielsweise Force Protocol Encryption für den Client nicht festgelegt ist, kann eine Anwendung die Verschlüsselung selbst anfordern. Um die Verschlüsselung sicherzustellen, selbst wenn kein Serverzertifikat bereitgestellt wurde, kann eine Anwendung die Verschlüsselung anfordern und TrustServerCertificate aktivieren. Wenn jedoch TrustServerCertificate in der Clientkonfiguration nicht aktiviert wird, ist immer noch ein bereitgestelltes Serverzertifikat erforderlich.

Version 19 der OLE DB-Treiber für SQL Server führt Breaking Changes in den verschlüsselungsbezogenen APIs ein. Weitere Informationen finden Sie unter Änderungen der Verschlüsselungseigenschaft.

Hauptversion 19

In der folgenden Tabelle wird die Auswertung der Verschlüsselungseinstellungen beschrieben:

Protokollverschlüsselung erzwingen - Clienteinstellung Verbindungszeichenfolge-/Verbindungsattribut 'Verschlüsseln/Verschlüsselung für Daten verwenden' Resultierende Verschlüsselung
0 Nein/Optional Optional
0 Ja/Obligatorisch (Standard) Obligatorisch.
0 Strict Strict
1 Nein/Optional Obligatorisch.
1 Ja/Obligatorisch (Standard) Obligatorisch.
1 Strict Strict
2 Wird ignoriert. Strict

In der folgenden Tabelle werden die resultierende Verschlüsselung und Validierung beschrieben:

Verschlüsselung Dem Serverzertifikat vertrauen Verbindungszeichenfolge/Verbindungsattribut 'Dem Serverzertifikat vertrauen' Ergebnis
Optional Die Verschlüsselung erfolgt nur für LOGIN-Pakete.
Obligatorisch. 0 Wird ignoriert. Die Verschlüsselung erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls schlägt der Verbindungsversuch fehl.
Obligatorisch. 1 Nein (Standard) Die Verschlüsselung erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls schlägt der Verbindungsversuch fehl.
Obligatorisch. 1 Ja Verschlüsselung wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet.
Strict Die Verschlüsselung erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls schlägt der Verbindungsversuch fehl.

Achtung

In der obigen Tabelle finden Sie lediglich einen Leitfaden für das Systemverhalten unter verschiedenen Konfigurationen. Um eine sichere Konnektivität zu gewährleisten, stellen Sie sicher, dass sowohl der Client als auch der Server eine Verschlüsselung erfordert (Informationen zur serverseitigen Konfiguration finden Sie unter Schritt 2: Konfigurieren der Verschlüsselungseinstellungen in SQL Server). Sorgen Sie außerdem dafür, dass der Server über ein verifizierbares Zertifikat verfügt und dass die Einstellung TrustServerCertificate für den Client auf FALSE festgelegt ist.

Hinweis

Ab Version 19.2 des OLE DB-Treibers können TDS 8.0-Verbindungen so konfiguriert werden, dass TLS 1.3 verwendet wird. Weitere Informationen finden Sie unter TLS 1.3-Unterstützung.

Hauptversion 18 mit neuen Authentifizierungsmethoden

Wenn die neuen Schlüsselwörter Authentifizierung oder Zugriffstoken für Verbindungszeichenfolgen (oder ihre entsprechenden Eigenschaften) verwendet werden, überschreibt der Treiber für Versionen 18.x.x den Standardverschlüsselungswert, um die Sicherheit zu erhöhen, indem er ihn auf yes setzt. Das Überschreiben geschieht zur Initialisierungszeit des Datenquellenobjekts. Wenn der Verschlüsselungswert vor der Initialisierung festgelegt wurde, wird er beibehalten und nicht überschrieben.

Hinweis

In ADO-Anwendungen und in Anwendungen, die die IDBInitialize-Schnittstelle über IDataInitialize::GetDataSource abrufen, legt die Kernkomponente, die die Schnittstelle implementiert, die Verschlüsselung explizit auf den Standardwert no fest. Dadurch akzeptieren die neuen Authentifizierungseigenschaften/-schlüsselwörter diese Einstellung, und der Verschlüsselungswert wird nicht überschrieben. Folglich wird empfohlen, dass diese Anwendungen Use Encryption for Data=true explizit festlegen, um den Standardwert zu überschreiben.

Für eine verbesserte Sicherheit akzeptieren die neuen Authentifizierungsmethoden die TrustServerCertificate-Einstellung (sowie die entsprechenden Schlüsselwörter/Eigenschaften der Verbindungszeichenfolge) unabhängig von der Verschlüsselungseinstellung des Clients. Folglich wird das Serverzertifikat standardmäßig überprüft. Der Treiber bestimmt wie folgt, ob das Serverzertifikat überprüft werden soll:

Dem Serverzertifikat vertrauen Verbindungszeichenfolge/Verbindungsattribut 'Dem Serverzertifikat vertrauen' Zertifikatüberprüfung
0 Nein (Standard) Ja
0 Ja Ja
1 Nein (Standard) Ja
1 Ja Nein

In der folgenden Tabelle wird die Auswertung der Verschlüsselungseinstellungen beschrieben:

Protokollverschlüsselung erzwingen - Clienteinstellung Verbindungszeichenfolge-/Verbindungsattribut 'Verschlüsseln/Verschlüsselung für Daten verwenden' Resultierende Verschlüsselung
0 Nein (Standard) Nein
0 Ja Ja
1 Nein (Standard) Ja
1 Ja Ja

In der folgenden Tabelle werden die resultierende Verschlüsselung und Validierung beschrieben:

Resultierende Verschlüsselung Zertifikatüberprüfung Ergebnis
Nein Nein Die Verschlüsselung erfolgt nur für LOGIN-Pakete.
Nein Ja Die Verschlüsselung erfolgt für LOGIN-Pakete nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
Ja Nein Verschlüsselung des gesamten Netzwerkdatenverkehrs wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet.
Ja Ja Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.

Hauptversion 18 mit älteren Authentifizierungsmethoden

In der folgenden Tabelle wird das Verschlüsselungs- und Validierungsergebnis für ältere Authentifizierungsmethoden beschrieben:

Protokollverschlüsselung erzwingen - Clienteinstellung Dem Serverzertifikat vertrauen Verbindungszeichenfolge-/Verbindungsattribut 'Verschlüsseln/Verschlüsselung für Daten verwenden' Verbindungszeichenfolge/Verbindungsattribut 'Dem Serverzertifikat vertrauen' Ergebnis
0 N/V Nein (Standard) Die Verschlüsselung erfolgt nur für LOGIN-Pakete.
0 Ja Nein (Standard) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
0 Ja Ja Verschlüsselung des gesamten Netzwerkdatenverkehrs wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet.
1 0 Wird ignoriert. Wird ignoriert. Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
1 1 Nein (Standard) Verschlüsselung des gesamten Netzwerkdatenverkehrs wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet.
1 1 Ja Nein (Standard) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
1 1 Ja Ja Verschlüsselung des gesamten Netzwerkdatenverkehrs wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet.

Weitere Informationen

OLE DB-Treiber für SQL Server-Features
Initialisierungs- und Autorisierungseigenschaften
Schlüsselwörter für Verbindungszeichenfolgen
Hauptversionsunterschiede
Registrierungseinstellungen