Verschlüsseln von Verbindungen zu SQL Server

SQL Server unterstützt SSL (Secure Sockets Layer) und ist mit Internetprotokollsicherheit (Internet Protocol Security, IPSec) kompatibel.

Secure Sockets Layer (SSL)

In Microsoft SQL Server kann SSL (Secure Sockets Layer) zum Verschlüsseln der Daten verwendet werden, die über ein Netzwerk zwischen einer SQL Server-Instanz 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

  1. Installieren Sie im Windows-Zertifikatspeicher des Servercomputers ein Zertifikat.

  2. Klicken Sie auf Start, zeigen Sie in der Programmgruppe Microsoft SQL Server auf Konfigurationstools, und klicken Sie auf SQL Server-Konfigurations-Manager.

  3. 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.

    HinweisHinweis

    Dies ist der Abschnitt Protokolle für<instance_name> im linken Bereich des Tools und kein bestimmtes Protokoll im rechten Bereich.

  4. Konfigurieren Sie das Database Engine (Datenbankmodul) auf der Registerkarte Zertifikat für die Verwendung des Zertifikats.

  5. 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.

    VorsichtshinweisVorsicht

    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 Valid from-Eigenschaft des Zertifikats und vor der Gültig bisValid to-Eigenschaft des Zertifikats liegen.

  • Das Zertifikat muss für die Serverauthentifizierung vorgesehen sein. Hierfür muss die Enhanced Key Usage-Eigenschaft des Zertifikats auf den Wert Server Authentication (1.3.6.1.5.5.7.3.1) festgelegt sein.

  • Das Zertifikat muss mit der KeySpec-Option 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.

  • SQL Server 2008 R2 und der SQL Server 2008 R2 Native Client unterstützen Platzhalterzertifikate. Andere Clients unterstützen Platzhalterzertifikate möglicherweise nicht. Weitere Informationen finden Sie in der Clientdokumentation und in KB258858.

Zertifikatanforderungen für SQL Server Native Client

Anwendungen, die "SERVER=shortname; ENCRYPT=yes" mit Zertifikaten verwenden, deren Antragsteller vollqualifizierte Domänennamen (FQDNs) angeben, konnten früher aufgrund gelockerter Validierungsbestimmungen Verbindungen herstellen. SQL Server 2008 R2 erhöht die Sicherheit, indem für die Antragsteller von Zertifikaten eine genaue Übereinstimmung erzwungen wird. Anwendungen, die auf einer weniger strengen Überprüfung basieren, müssen eine der folgenden Aktionen ausführen:

  • Verwenden des FQDNs in der Verbindungszeichenfolge

    • Diese Option erfordert kein Neukompilieren der Anwendung, wenn das SERVER-Schlüsselwort der Verbindungszeichenfolge außerhalb der Anwendung konfiguriert wird.

    • Diese Option funktioniert nicht für Anwendungen, deren Verbindungszeichenfolgen hart codiert sind.

    • Diese Option funktioniert nicht für Anwendungen, die Datenbankspiegelung verwenden, da der gespiegelte Server mit einem einfachen Namen antwortet.

  • Hinzufügen eines Alias für den Kurznamen, um eine Zuordnung mit dem FQDN herzustellen

    • Diese Option funktioniert sogar für Anwendungen, deren Verbindungszeichenfolgen hart codiert sind.

    • Diese Option funktioniert nicht für Anwendungen, die Datenbankspiegelung verwenden, da die Anbieter keine Aliase für empfangene Namen von Failoverpartnern suchen.

  • Ausstellen eines Zertifikats für den Kurznamen

    • Diese Option funktioniert für alle Anwendungen.

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 Failoverclusterinstanz 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.

Internetprotokollsicherheit (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 oder in der Netzwerkdokumentation.