Verschlüsseln von Verbindungen zu SQL Server
In SQL Server wird SSL (Secure Sockets Layer) unterstützt, und es ist mit IPSec (Internet Protocol Security) kompatibel.
Secure Sockets Layer (SSL)
Microsoft In MicrosoftSQL Server kann SSL (Secure Sockets Layer) zum Verschlüsseln der Daten verwendet werden, die über ein Netzwerk zwischen einer Instanz von SQL Server und einer Clientanwendung übertragen werden. Die SSL-Verschlüsselung wird auf der Protokollebene durchgeführt und steht allen SQL Server-Clients mit Ausnahme von DB Library- und MDAC 2.53-Clients zur Verfügung.
SSL kann für die Serverüberprüfung verwendet werden, wenn die Verschlüsselung von einer Clientverbindung angefordert wird. Wird die Instanz von SQL Server auf einem Computer ausgeführt, dem ein Zertifikat von einer öffentlichen Zertifizierungsstelle zugewiesen wurde, wird die Identität des Computers und der Instanz von SQL Server durch die Zertifikatkette sichergestellt, die zur vertrauenswürdigen Stammzertifizierungsstelle führt. Für diese Serverüberprüfung wird vorausgesetzt, dass der Computer, auf dem die Clientanwendung ausgeführt wird, so konfiguriert ist, dass der Stammzertifizierungsstelle des vom Server verwendeten Zertifikats vertraut wird. Die Verschlüsselung mit einem selbstsignierten Zertifikat ist möglich und wird im folgenden Abschnitt beschrieben, selbstsignierte Zertifikate bieten jedoch nur begrenzt Schutz.
Die von SSL verwendete Verschlüsselungsebene, 40 Bit oder 128 Bit, hängt von der Version des Microsoft Windows-Betriebssystems ab, unter der die Anwendungs- und Datenbankcomputer ausgeführt werden.
Das Aktivieren der SSL-Verschlüsselung erhöht die Sicherheit von Daten, die netzwerkübergreifend zwischen Instanzen von SQL Server und Anwendungen übertragen werden. Durch das Aktivieren der Verschlüsselung kommt es jedoch zu Leistungseinbußen. Wenn der gesamte Datenverkehr zwischen SQL Server und einer Clientanwendung mithilfe von SSL verschlüsselt wird, sind die folgenden zusätzlichen Verarbeitungsschritte erforderlich:
Ein zusätzlicher Netzwerkroundtrip ist zum Zeitpunkt des Verbindungsaufbaus erforderlich.
Die von der Anwendung an die SQL Server-Instanz gesendeten Pakete müssen von der Clientnetzwerkbibliothek verschlüsselt und von der Servernetzwerkbibliothek entschlüsselt werden.
Die von der Instanz von SQL Server an die Anwendung gesendeten Pakete müssen von der Servernetzwerkbibliothek verschlüsselt und von der Clientnetzwerkbibliothek entschlüsselt werden.
Konfigurieren von SSL für SQL Server
Mit dem folgenden Verfahren wird beschrieben, wie SSL für SQL Server konfiguriert wird.
So konfigurieren Sie SSL
Installieren Sie im Windows-Zertifikatspeicher des Servercomputers ein Zertifikat.
Klicken Sie auf Start, zeigen Sie in der Programmgruppe Microsoft SQL Server auf Konfigurationstools, und klicken Sie auf SQL Server-Konfigurations-Manager.
Erweitern Sie SQL Server-Netzwerkkonfiguration, klicken Sie mit der rechten Maustaste auf die Protokolle für den gewünschten Server, und klicken Sie dann auf Eigenschaften.
Hinweis Dabei handelt es sich um den Bereich Protokolle für <Instanzname> im linken Fensterbereich des Tools und nicht um ein bestimmtes Protokoll im rechten Bereich.
Führen Sie auf der Registerkarte Zertifikat die Konfiguration von Database Engine (Datenbankmodul) für die Verwendung des Zertifikats aus.
Zeigen Sie auf der Registerkarte Flags die Protokollverschlüsselungsoption an, oder geben Sie die Option an. Das Anmeldepaket wird immer verschlüsselt.
Wenn die Option ForceEncryption für das Database Engine (Datenbankmodul) auf Ja festgelegt ist, werden sämtliche Client/Server-Kommunikationen verschlüsselt, und Clients, die die Verschlüsselung nicht unterstützen, erhalten keinen Zugriff.
Ist die Option ForceEncryption für das Database Engine (Datenbankmodul) auf Nein festgelegt, kann die Verschlüsselung von der Clientanwendung angefordert werden, ist jedoch nicht erforderlich.
SQL Server muss neu gestartet werden, nachdem Sie die Einstellung von ForceEncryption geändert haben.
Anmeldeinformationen (im Anmeldungspaket), die beim Herstellen einer Verbindung mit SQL Server übertragen werden, sind stets verschlüsselt. In SQL Server wird ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle verwendet, sofern verfügbar. Wenn kein vertrauenswürdiges Zertifikat installiert ist, wird in SQL Server ein selbstsigniertes Zertifikat generiert, wenn die Instanz gestartet wird, und das selbstsignierte Zertifikat wird zum Verschlüsseln der Anmeldeinformationen verwendet. Mit dem selbstsignierten Zertifikat wird die Sicherheit erhöht, es schützt jedoch nicht vor der Vortäuschung einer falschen Identität durch den Server. Wenn das selbstsignierte Zertifikat verwendet wird und der Wert der Option ForceEncryption auf Ja festgelegt ist, werden alle in einem Netzwerk übertragenen Daten zwischen SQL Server und der Clientanwendung mithilfe des selbstsignierten Zertifikats verschlüsselt.
Vorsicht SSL-Verbindungen, die mithilfe eines selbstsignierten Zertifikats verschlüsselt werden, bieten keine hohe Sicherheit. Sie sind anfällig für "Man-in-the-Middle"-Angriffe. In einer Produktionsumgebung oder auf Servern, die mit dem Internet verbunden sind, sollten Sie sich nicht auf SSL mit Verwendung selbstsignierter Zertifikate verlassen.
Zertifikatanforderungen
Damit in SQL Server ein SSL-Zertifikat geladen wird, müssen für das Zertifikat folgende Bedingungen erfüllt sein:
Das Zertifikat muss sich im Zertifikatspeicher des lokalen Computers oder im Zertifikatspeicher des aktuellen Benutzers befinden.
Die aktuelle Systemzeit muss hinter der Gültig von-Eigenschaft des Zertifikats und vor der Gültig bis-Eigenschaft des Zertifikats liegen.
Das Zertifikat muss für die Serverauthentifizierung vorgesehen sein. Dazu ist es erforderlich, dass die Erweiterte Schlüsselverwendung-Eigenschaft des Zertifikats auf Serverauthentifizierung (1.3.6.1.5.5.7.3.1) festgelegt ist.
Das Zertifikat muss mithilfe der Option KeySpec von AT_KEYEXCHANGE erstellt werden. Normalerweise enthält die Schlüsselverwendungseigenschaft (KEY_USAGE) des Zertifikats auch die Schlüsselverschlüsselung (CERT_KEY_ENCIPHERMENT_KEY_USAGE).
Mit der Subject-Eigenschaft des Zertifikats muss angegeben werden, dass der allgemeine Name (Common Name, CN) mit dem Hostnamen oder dem vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) des Servercomputers übereinstimmt. Wenn SQL Server auf einem Failovercluster ausgeführt wird, muss der allgemeine Name mit dem Hostnamen oder FQDN des virtuellen Servers übereinstimmen, und die Zertifikate müssen auf allen Knoten im Failovercluster bereitgestellt werden.
Verschlüsselung auf einem Cluster
Wenn Sie die Verschlüsselung für einen Failovercluster verwenden möchten, müssen Sie das Serverzertifikat mit dem vollqualifizierten DNS-Namen der über den Failovercluster verfügenden Instanz auf allen Knoten im Failovercluster installieren. Wenn beispielsweise ein Cluster mit den beiden Knoten test1.your company.com und test2.your company.com sowie eine über einen Failovercluster verfügende Instanz von SQL Server mit dem Namen fcisql vorliegt, müssen Sie für fcisql.your company.com ein Zertifikat abrufen und auf beiden Knoten installieren. Anschließend können Sie das Kontrollkästchen ForceEncryption im Eigenschaftenfeld Protokolle für <Server> der SQL Server-Netzwerkkonfiguration aktivieren, um den Failovercluster für die Verschlüsselung zu konfigurieren.
Internet Protocol Security (IPSec)
Mithilfe von IPSec können SQL Server-Daten während der Übertragung verschlüsselt werden. IPSec wird von Client- und Serverbetriebssystemen bereitgestellt und muss in SQL Server nicht konfiguriert werden. Informationen zu IPSec finden Sie in der Windows-Dokumentation und in der Netzwerkdokumentation.