Verwenden von Verschlüsselung ohne Überprüfung
SQL Server verschlüsselt stets Netzwerkpakete, die mit 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.
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 ODBC und 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. Dies wird möglicherweise auch vom SQL Server-Konfigurations-Manager anhand der Option Protokollverschlüsselung erzwingen konfiguriert. Standardmäßig ist für die Verschlüsselung des Netzwerkverkehrs für eine Verbindung die Bereitstellung eines Zertifikats auf dem Server erforderlich.
Weitere Informationen zu Verbindungszeichenfolgeschlüsselwörtern finden Sie unter Verwenden von Schlüsselwörtern für Verbindungszeichenfolgen mit SQL Server Native Client.
Um die Verschlüsselung zu aktivieren, die verwendet werden soll, wenn kein Zertifikat auf dem Server bereitgestellt wurde, kann der SQL Server-Konfigurations-Manager zum Festlegen der Optionen Protokollverschlüsselung erzwingen und Dem Serverzertifikat vertrauen verwendet 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.
Anwendungen können auch das Schlüsselwort "TrustServerCertificate" oder das zugeordnete Verbindungsattribut verwenden, um sicherzustellen, dass eine Verschlüsselung durchgeführt wird. Anwendungseinstellungen senken nicht die vom SQL Server Client-Konfigurations-Manager festgelegte Sicherheitsstufe, vielmehr stärken sie sie. Wenn beispielsweise Protokollverschlüsselung erzwingen nicht für den Client gesetzt 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 und "TrustServerCertificate" anfordern. Wenn "TrustServerCertificate" nicht in der Clientkonfiguration aktiviert ist, ist dennoch die Bereitstellung eines Serverzertifikats erforderlich. In der folgenden Tabelle werden alle Fälle beschrieben:
Protokollverschlüsselung erzwingen - Clienteinstellung |
Dem Serverzertifikat vertrauen |
Verbindungszeichenfolge-/Verbindungsattribut 'Verschlüsseln/Verschlüsselung für Daten verwenden' |
Verbindungszeichenfolge/Verbindungsattribut 'Dem Serverzertifikat vertrauen' |
Ergebnis |
---|---|---|---|---|
Nein |
– |
Nein (Standard) |
Wird ignoriert. |
Keine Verschlüsselung. |
Nein |
– |
Ja |
Nein (Standard) |
Eine Verschlüsselung findet nur statt, wenn ein überprüfbares Serverzertifikat vorliegt, anderenfalls schlägt der Verbindungsversuch fehl. |
Nein |
– |
Ja |
Ja |
Verschlüsselung wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet. |
Ja |
Nein |
Wird ignoriert. |
Wird ignoriert. |
Eine Verschlüsselung findet nur statt, wenn ein überprüfbares Serverzertifikat vorliegt, anderenfalls schlägt der Verbindungsversuch fehl. |
Ja |
Ja |
Nein (Standard) |
Wird ignoriert. |
Verschlüsselung wird immer durchgeführt, es wird jedoch z. B. ein selbstsigniertes Serverzertifikat verwendet. |
Ja |
Ja |
Ja |
Nein (Standard) |
Eine Verschlüsselung findet nur statt, wenn ein überprüfbares Serverzertifikat vorliegt, andernfalls schlägt der Verbindungsversuch fehl. |
Ja |
Ja |
Ja |
Ja |
Verschlüsselung wird immer durchgeführt, es wird jedoch möglicherweise ein selbstsigniertes Serverzertifikat verwendet. |
SQL Server Native Client-OLE DB-Anbieter
Der SQL Server Native Client OLE DB-Anbieter unterstützt die Verschlüsselung ohne Überprüfung durch Hinzufügen der SSPROP_INIT_TRUST_SERVER_CERTIFICATE-Datenquelleninitialisierungseigenschaft, die im DBPROPSET_SQLSERVERDBINIT-Eigenschaftensatz implementiert wird. Darüber hinaus wurde ein neues Verbindungszeichenfolgeschlüsselwort, "TrustServerCertificate", hinzugefügt. Gültig sind die Werte "Ja" oder "Nein", wobei "Nein" die Standardeinstellung ist. Wenn Dienstkomponenten verwendet werden, sind die Werte "true" und "false" gültig, wobei "false" die Standardeinstellung ist.
Weitere Informationen zu Verbesserungen am DBPROPSET_SQLSERVERDBINIT-Eigenschaftensatz finden Sie unter Initialisierungs- und Autorisierungseigenschaften.
SQL Server Native Client ODBC-Treiber
Der SQL Server Native Client ODBC-Treiber unterstützt eine Verschlüsselung ohne Überprüfung durch Hinzufügungen zu den Funktionen SQLSetConnectAttr und SQLGetConnectAttr. SQL_COPT_SS_TRUST_SERVER_CERTIFICATE wurde hinzugefügt, um entweder SQL_TRUST_SERVER_CERTIFICATE_YES oder SQL_TRUST_SERVER_CERTIFICATE_NO anzunehmen, wobei SQL_TRUST_SERVER_CERTIFICATE_NO die Standardeinstellung ist. Darüber hinaus wurde ein neues Verbindungszeichenfolgeschlüsselwort, "TrustServerCertificate", hinzugefügt. Gültig sind die Werte "Ja" oder "Nein", wobei "Nein" die Standardeinstellung ist.