Verschlüsselung und Zertifikatsüberprüfung in Microsoft.Data.SqlClient

Herunterladen von ADO.NET

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.

Ganz allgemein stellt die Verschlüsselung zwischen einem Client und einem Server sicher, dass Daten nur vom Client und vom Server gelesen werden können. Ein wichtiger Bestandteil des Verschlüsselungsprozesses ist die Überprüfung des Serverzertifikats. Die Überprüfung des Serverzertifikats ermöglicht dem Client sicherzustellen, dass der Server der ist, als der er sich ausgibt. Das Zertifikat wird auf Informationen wie Ablauf, Vertrauenskette und Übereinstimmung des Namens im Zertifikat mit dem Namen des Servers überprüft, mit dem der Client eine Verbindung herstellt. Weitere Informationen finden Sie unter Transport Layer Security und digitale Zertifikate.

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 dem Schlüsselwort Encrypt in Verbindungszeichenfolgen oder Verbindungseigenschaften. 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 überprüfbares Zertifikat auf dem Server bereitstellen, stellen Sie sicher, dass die Clienteinstellungen Encrypt den Wert True und die Einstellungen Trust Server Certificate den Wert False aufweisen.

Um die Verschlüsselung zu aktivieren, die verwendet werden soll, wenn kein Zertifikat auf dem Server bereitgestellt wurde, können die Clienteinstellungen Encrypt und Trust Server Certificate verwendet werden. In diesem Fall verwendet die Verschlüsselung ein selbstsigniertes Serverzertifikat ohne Überprüfung durch den Client. Diese Konfiguration verschlüsselt die Verbindung, verhindert aber nicht, dass Geräte zwischen Client und Server die Verbindung abfangen und einen Verschlüsselungsproxy zwischenschalten können.

Änderungen beim Verschlüsselungs- und Zertifikatsüberprüfungsverhalten

In Version 4.0 von Microsoft.Data.SqlClient wurden Breaking Changes bei den Verschlüsselungseinstellungen eingeführt. Der Standardwert von Encrypt ist jetzt True.

In Version 2.0 von Microsoft.Data.SqlClient wurden Breaking Changes beim Verhalten der Einstellung Trust Server Certificate eingeführt. Wenn zuvor Encrypt auf False festgelegt war, wurde das Serverzertifikat unabhängig von der Einstellung Trust Server Certificate nicht überprüft. Nun wird das Serverzertifikat basierend auf der Einstellung Trust Server Certificate überprüft, wenn der Server die Verschlüsselung erzwingt, selbst wenn Encrypt auf False festgelegt ist.

Version 4.0

In der folgenden Tabelle werden die Ergebnisse der Verschlüsselung und Validierung für Verschlüsselungs- und Zertifikatseinstellungen beschrieben:

Clienteinstellung Encrypt Clienteinstellung Trust Server Certificate Servereinstellung Force encryption Ergebnis
False False (Standardwert) Nein Die Verschlüsselung erfolgt nur für LOGIN-Pakete. Das Zertifikat wird nicht überprüft.
False False (Standardwert) Ja (Änderung beim Verhalten zwischen Version 1.0 und 2.0) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
False True Yes Der gesamte Netzwerkdatenverkehr wird verschlüsselt, und das Zertifikat wird nicht überprüft.
TRUE (neuer Standardwert) False (Standardwert) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
TRUE (neuer Standardwert) True Der gesamte Netzwerkdatenverkehr wird verschlüsselt, aber das Zertifikat wird nicht überprüft.
Strict (hinzugefügt in Version 5.0) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs mit TDS 8 erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.

Achtung

In der obigen Tabelle finden Sie lediglich einen Leitfaden für das Systemverhalten unter verschiedenen Konfigurationen. Für eine sichere Konnektivität müssen Sie dafür sorgen, dass sowohl der Client als auch der Server die Verschlüsselung erzwingen. 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.

Ab Version 5.0 von Microsoft.Data.SqlClient ist HostNameInCertificate eine neue Verbindungsoption. Durch die Überprüfung der Serverzertifikate wird sichergestellt, dass der Common Name (CN) oder Subject Alternate Name (SAN) im Zertifikat mit dem Servernamen der Verbindung übereinstimmt. In einigen Fällen wie DNS-Aliasen entspricht der Servername möglicherweise nicht dem CN oder SAN. Der Wert für HostNameInCertificate kann verwendet werden, um einen anderen erwarteten CN oder SAN im Serverzertifikat anzugeben.

Version 2.0

Ab Version 2.0 überprüft der Client das Serverzertifikat unabhängig von der Einstellung Encrypt gemäß der Einstellung Trust Server Certificate, wenn der Server die Verschlüsselung erzwingt.

In der folgenden Tabelle werden die Ergebnisse der Verschlüsselung und Validierung für Verschlüsselungs- und Zertifikatseinstellungen beschrieben:

Clienteinstellung Encrypt Clienteinstellung Trust Server Certificate Servereinstellung Force encryption Ergebnis
False (Standardwert) False (Standardwert) Nein Die Verschlüsselung erfolgt nur für LOGIN-Pakete. Das Zertifikat wird nicht überprüft.
False (Standardwert) False (Standardwert) Ja (Änderung beim Verhalten) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
False (Standardwert) True Yes Der gesamte Netzwerkdatenverkehr wird verschlüsselt, und das Zertifikat wird nicht überprüft.
True False (Standardwert) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
True True Der gesamte Netzwerkdatenverkehr wird verschlüsselt, aber das Zertifikat wird nicht überprüft.

Achtung

In der obigen Tabelle finden Sie lediglich einen Leitfaden für das Systemverhalten unter verschiedenen Konfigurationen. Für eine sichere Konnektivität müssen Sie dafür sorgen, dass sowohl der Client als auch der Server die Verschlüsselung erzwingen. 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.

Version 1.0

In der folgenden Tabelle werden die Ergebnisse der Verschlüsselung und Validierung für Verschlüsselungs- und Zertifikatseinstellungen beschrieben:

Clienteinstellung Encrypt Clienteinstellung Trust Server Certificate Servereinstellung Force encryption Ergebnis
False (Standardwert) False (Standardwert) Nein Die Verschlüsselung erfolgt nur für LOGIN-Pakete. Das Zertifikat wird nicht überprüft.
False (Standardwert) False (Standardwert) Ja Der gesamte Netzwerkdatenverkehr wird verschlüsselt, aber das Zertifikat wird nicht überprüft.
False (Standardwert) True Yes Der gesamte Netzwerkdatenverkehr wird verschlüsselt, und das Zertifikat wird nicht überprüft.
True False (Standardwert) Die Verschlüsselung des gesamten Netzwerkdatenverkehrs erfolgt nur, wenn ein überprüfbares Serverzertifikat vorhanden ist. Andernfalls hat der Verbindungsversuch keinen Erfolg.
True True Der gesamte Netzwerkdatenverkehr wird verschlüsselt, aber das Zertifikat wird nicht überprüft.

Siehe auch

Verbindungszeichenfolgen
Syntax der Verbindungszeichenfolge