Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine
Gilt für:
SQL Server (alle unterstützten Versionen)
Hier erfahren Sie, wie Sie Daten über Kommunikationskanäle verschlüsseln. Aktivieren Sie verschlüsselte Verbindungen für eine Instanz der SQL Server-Datenbank-Engine, und geben Sie mithilfe des SQL Server-Konfigurations-Managers ein Zertifikat an.
Der Servercomputer muss über ein Zertifikat verfügen. Importieren Sie das Zertifikat in Windows, um es für den Servercomputer bereitzustellen. Der Clientcomputer muss so eingerichtet werden, dass er die Stammzertifizierungsstelle des Zertifikats als vertrauenswürdig einstuft.
Wichtig
Seit SQL Server 2016 (13.x) wird Secure Sockets Layer (SSL) nicht mehr unterstützt. Verwenden Sie stattdessen Transport Layer Security (TLS).
Transport Layer Security (TLS)
SQL Server kann Transport Layer Security (TLS) zum Verschlüsseln der Daten verwendet werden, die über ein Netzwerk zwischen einer Clientanwendung und einer Instanz von SQL Server übertragen werden. Die TLS-Verschlüsselung erfolgt auf Protokollebene und steht allen unterstützten SQL Server-Clients zur Verfügung.
TLS 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. Weitere Informationen zu Serverzertifikaten und zur Verschlüsselung finden Sie unter Verwenden von „TrustServerCertificate“.
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 TLS verwendete Verschlüsselungsstufe, 40 Bit oder 128 Bit, hängt von der Version des Microsoft Windows-Betriebssystems ab, unter der die Anwendungs- und Datenbankcomputer ausgeführt werden.
Warnung
Die Verwendung der 40-Bit-Verschlüsselungsstufe gilt als unsicher.
TLS-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 TLS mit Verwendung selbstsignierter Zertifikate verlassen.
Das Aktivieren der TLS-Verschlüsselung erhöht die Sicherheit von Daten, die netzwerkübergreifend zwischen Instanzen von SQL Server und Anwendungen übertragen werden. Wenn der gesamte Datenverkehr jedoch zwischen SQL Server und einer Clientanwendung mithilfe von TLS 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 vom Client-TLS-Stapel verschlüsselt und vom Server-TLS-Stapel entschlüsselt werden.
- Die von der Instanz von SQL Server an die Anwendung gesendeten Pakete müssen vom Server-TLS-Stapel verschlüsselt und vom Client-TLS-Stapel entschlüsselt werden.
Informationen zu Zertifikaten
Das Zertifikat muss für die Serverauthentifizierungausgegeben sein. Der Name des Zertifikats muss der vollqualifizierte Domänenname (FQDN) des Computers sein.
Zertifikate werden lokal für diesen Benutzer auf dem Computer gespeichert. Sie müssen den SQL Server -Configuration Manager mit einem Konto mit lokalen Administratorberechtigungen ausführen, um ein Zertifikat zu installieren, das von SQL Server verwendet werden soll.
Der Client muss in der Lage sein, den Besitzer des vom Server verwendeten Zertifikats zu überprüfen. Wenn der Client über das Zertifikat für öffentliche Schlüssel der Zertifizierungsstelle verfügt, die das Serverzertifikat signiert hat, sind keine weiteren Konfigurationsschritte erforderlich. Microsoft Windows enthält die Zertifikate für öffentliche Schlüssel von vielen Zertifizierungsstellen. Wenn das Serverzertifikat von einer öffentlichen oder privaten Zertifizierungsstelle signiert wurde, für die der Client kein öffentliches Schlüsselzertifikat besitzt, müssen Sie das Zertifikat für öffentliche Schlüssel der Zertifizierungsstelle installieren, die das Serverzertifikat signiert hat.
Hinweis
Wenn Sie die Verschlüsselung bei einem Failovercluster verwenden möchten, müssen Sie das Serverzertifikat mit dem vollqualifizierten DNS-Namen des virtuellen Servers auf allen Knoten im Failovercluster installieren. Wenn Sie beispielsweise über einen Cluster mit zwei Knoten verfügen, wobei die Knotennamen test1.*<Name Ihres Unternehmens>*.com und test2.*<Name Ihres Unternehmens>*.com lauten, und ein virtueller Server den Namen virtsql trägt, müssen Sie ein Zertifikat für virtsql.*<Name Ihres Unternehmens>*.com auf beiden Knoten installieren. Sie können den Wert der Option ForceEncryption im Eigenschaftsfeld Protokolle für virtsql von SQL Server-Netzwerkkonfiguration auf Ja setzen.
Wenn Sie eine verschlüsselte Verbindung für einen Azure Search-Indexer zu SQL Server auf einer Azure-VM erstellen wollen, finden Sie weitere Informationen unter Konfigurieren einer Verbindung eines Azure Search-Indexers mit SQL Server auf einer Azure-VM.
Zertifikatanforderungen
Damit in SQL Server ein TLS-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.
Das SQL Server-Dienstkonto muss über die erforderliche Berechtigung für den Zugriff auf das TLS-Zertifikat verfügen.
Die aktuelle Systemzeit muss nach der Eigenschaft Gültig ab und vor der Eigenschaft Gültig bis des Zertifikats liegen.
Hinweis
Die Gültigkeit des Zertifikats wird beim Herstellen einer Verbindung zu SQL Server mit den Clientverbindungen ausgewertet, die initiiert werden und die Verschlüsselungsoption auf „true“ festlegen, es sei denn, sie werden von der Einstellung „Vertrauenswürdiges Serverzertifikat“ außer Kraft gesetzt.
Das Zertifikat muss für die Serverauthentifizierung vorgesehen sein. Dazu muss für die Enhanced Key Usage-Eigenschaft des Zertifikats Server Authentification (1.3.6.1.5.5.7.3.1) angegeben sein.
Das Zertifikat muss mit der KeySpec-Option von AT_KEYEXCHANGE erstellt werden. Hierfür ist ein Legacyzertifikat erforderlich. 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 Sie den Hostnamen verwenden, muss das DNS-Suffix im Zertifikat angegeben werden. Wenn SQL Server in 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 (SNAC) unterstützen Platzhalterzertifikate. SNAC wurde als veraltet markiert und durch den Microsoft OLE DB-Treiber für SQL Server und Microsoft ODBC Driver for SQL Server ersetzt. Andere Clients unterstützen möglicherweise keine Platzhalterzertifikate.
- Platzhalterzertifikate können nicht mithilfe des SQL Server-Konfigurations-Managers ausgewählt werden. Sie müssen den Registrierungsschlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLibbearbeiten und den Fingerabdruck des Zertifikats ohne Leerraum zum Wert des Zertifikats hinzufügen, um ein Platzhalterzertifikat zu verwenden.
Warnung
Ein fehlerhaftes Bearbeiten der Registrierung kann eine schwerwiegende Beschädigung des Systems zur Folge haben. Bevor Sie Änderungen an der Registrierung vornehmen, sollten Sie die wertvollen Daten auf dem Computer sichern.
- Platzhalterzertifikate können nicht mithilfe des SQL Server-Konfigurations-Managers ausgewählt werden. Sie müssen den Registrierungsschlüssel
Installieren auf einem einzelnen Server
Mit SQL Server 2019 (15.x) ist die Zertifikatverwaltung im SQL Server-Konfigurations-Manager integriert. Der SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) kann mit früheren Versionen von SQL Server verwendet werden. Informationen zum Hinzufügen eines Zertifikats auf einer einzelnen SQL Server-Instanz finden Sie unter Zertifikatverwaltung (SQL Server-Konfigurations-Manager).
Wenn Sie SQL Server 2012 (11.x) über SQL Server 2017 (14.x) verwenden und der SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) nicht verfügbar ist, führen Sie die folgenden Schritte aus:
Klicken Sie im Menü Start auf Ausführen, geben Sie im Feld ÖffnenMMC ein, und klicken Sie auf OK.
Klicken Sie in der MMC-Konsole im Menü Datei auf Snap-In hinzufügen/entfernen.
Klicken Sie im Dialogfeld Snap-In hinzufügen/entfernen auf Hinzufügen.
Wählen Sie im Dialogfeld Eigenständiges Snap-In hinzufügenZertifikate aus, und klicken Sie auf Hinzufügen.
Wählen Sie im Dialogfeld Zertifikat-Snap-InComputerkonto aus, und klicken Sie dann auf Fertig stellen.
Klicken Sie im Dialogfeld Eigenständiges Snap-In hinzufügen auf Schließen.
Klicken Sie im Dialogfeld Snap-In hinzufügen/entfernen auf OK.
Erweitern Sie unter Zertifikat-Snap-In zunächst Zertifikate und anschließend Eigene Zertifikate. Klicken Sie dann mit der rechten Maustaste auf Zertifikate, zeigen Sie auf Alle Aufgaben, und klicken Sie auf Importieren.
Klicken Sie mit der rechten Maustaste auf das importierte Zertifikat, zeigen Sie auf Alle Aufgaben, und klicken Sie dann auf Manage Private Keys (Privatschlüssel verwalten). Fügen Sie im Dialogfeld Sicherheit die Leseberechtigung für das Benutzerkonto hinzu, das vom SQL Server-Dienstkonto verwendet wird.
Ergänzen Sie die Angaben im Zertifikatimport-Assistenten, um dem Computer ein Zertifikat hinzuzufügen, und schließen Sie dann die MMC-Konsole. Weitere Informationen zum Hinzufügen von Zertifikaten zu einem Computer finden Sie in der Windows-Dokumentation.
Wichtig
In Produktionsumgebungen wird die Verwendung eines von einer Zertifizierungsstelle ausgestellten vertrauenswürdigen Zertifikats empfohlen.
Zu Testzwecken kann auch ein selbstsigniertes Zertifikat verwendet werden. Informationen zum Erstellen eines selbstsignierten Zertifikats finden Sie in den Artikeln zum PowerShell-Cmdlet New-SelfSignedCertificate bzw. dem certreq-Befehl.
Installieren auf mehreren Servern
Mit SQL Server 2019 (15.x) ist die Zertifikatverwaltung im SQL Server-Konfigurations-Manager integriert. Der SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) kann mit früheren Versionen von SQL Server verwendet werden. Weitere Informationen zum Hinzufügen eines Zertifikats in einer Failoverclusterkonfiguration oder in einer Verfügbarkeitsgruppenkonfiguration finden Sie unter Zertifikatverwaltung (SQL Server-Konfigurations-Manager).
Wenn Sie SQL Server 2012 (11.x) über SQL Server 2017 (14.x) verwenden und der SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) nicht verfügbar ist, führen Sie für jeden Server die Schritte im Abschnitt Bereitstellen (Installieren) eines Zertifikats auf einem einzelnen Server aus.
Exportieren des Serverzertifikats
Suchen Sie unter Zertifikat-Snap-In das Zertifikat im Ordner Zertifikate / Eigene Zertifikate. Klicken Sie dann mit der rechten Maustaste auf Zertifikat, zeigen Sie auf Alle Aufgaben, und klicken Sie auf Exportieren.
Führen Sie den Zertifikatexport-Assistentenaus, und speichern Sie die Zertifikatsdatei in einem geeigneten Speicherort.
Konfigurieren des Servers
Konfigurieren Sie den Server, sodass er verschlüsselte Verbindungen erzwingt.
Wichtig
Das SQL Server-Dienstkonto muss über Leseberechtigungen für das Zertifikat verfügen, das zum Erzwingen der Verschlüsselung auf der SQL Server-Instanz verwendet wird. Für ein nicht privilegiertes Dienstkonto müssen dem Zertifikat Leseberechtigungen hinzugefügt werden. Ist dies nicht der Fall, kann beim Neustart des SQL Server-Diensts ein Fehler auftreten.
Erweitern Sie im SQL Server-Konfigurations-Manager den Eintrag SQL Server-Netzwerkkonfiguration, klicken Sie mit der rechten Maustaste auf Protokolle für<Serverinstanz>>, und klicken Sie dann auf Eigenschaften.
Wählen Sie im Dialogfeld Protokolle für<Instanzname>Eigenschaften auf der Registerkarte Zertifikat das gewünschte Zertifikat aus der Dropdownliste für das Feld Zertifikat aus, und klicken Sie dann auf OK.
Klicken Sie auf der Registerkarte Flags im Feld ForceEncryption auf Ja und anschließend auf OK, um das Dialogfeld zu schließen.
Starten Sie den SQL Server-Dienst neu.
Hinweis
Konfigurieren Sie den Client so, dass verschlüsselte Verbindungen angefordert werden, um eine sichere Verbindung zwischen Client und Server zu gewährleisten. Weitere Informationen finden Sie weiter unten in diesem Artikel.
Konfigurieren von Clients
Konfigurieren Sie den Client, sodass er verschlüsselte Verbindungen anfordert.
Kopieren Sie entweder das Originalzertifikat oder die exportierte Zertifikatsdatei auf den Clientcomputer.
Installieren Sie auf dem Clientcomputer mithilfe des Zertifikate -Snap-Ins entweder das Stammzertifikat oder die exportierte Zertifikatsdatei.
Klicken Sie im SQL Server-Konfigurations-Manager mit der rechten Maustaste auf SQL Server Native Client-Konfiguration und dann auf Eigenschaften.
Klicken Sie auf der Seite Flags im Feld Protokollverschlüsselung erzwingen auf Ja.
Verwenden von SQL Server Management Studio
So verschlüsseln Sie eine Verbindung von SQL Server Management Studio:
Klicken Sie auf der Objekt-Explorer-Symbolleiste auf Verbinden, und wählen Sie dann die Datenbank-Engine aus.
Vervollständigen Sie im Dialogfeld Verbindung mit Server herstellen die Verbindungseinstellungen, und klicken Sie dann auf Optionen.
Klicken Sie auf der Registerkarte Verbindungseigenschaften auf Verbindung verschlüsseln.
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.