Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine

Gilt für:yes SQL Server (alle unterstützten Versionen)

Hier erfahren Sie, wie Sie Daten über Kommunikationskanäle verschlüsseln. Sie aktivieren verschlüsselte Verbindungen für eine Instanz des SQL Server Datenbank-Engine und verwenden SQL Server-Konfigurations-Manager, um ein Zertifikat anzugeben.

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

Ab SQL Server 2016 (13.x) wurde Secure Sockets Layer (SSL) eingestellt. Verwenden Sie stattdessen Transport Layer Security (TLS).

Transport Layer Security (TLS)

SQL Server kann Transport Layer Security (TLS) verwenden, um Daten zu verschlüsseln, die über ein Netzwerk zwischen einer Instanz von SQL Server und einer Clientanwendung übertragen werden. Die TLS-Verschlüsselung wird innerhalb der Protokollebene ausgeführt und ist für alle unterstützten SQL Server verfügbar.

TLS kann für die Serverüberprüfung verwendet werden, wenn die Verschlüsselung von einer Clientverbindung angefordert wird. Wenn die Instanz von SQL Server auf einem Computer ausgeführt wird, dem ein Zertifikat von einer öffentlichen Zertifizierungsstelle zugewiesen wurde, wird die Identität des Computers und der Instanz von SQL Server durch die Kette von Zertifikaten, die zur vertrauenswürdigen Stammzertifizierungsstelle führen, als vertrauenswürdig eingestuft. 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.

Warnung

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.

Die Aktivierung der TLS-Verschlüsselung erhöht die Sicherheit von Daten, die über Netzwerke zwischen Instanzen von SQL Server und Anwendungen übertragen werden. Wenn jedoch der ganze Datenverkehr zwischen SQL Server und einer Clientanwendung mitHILFE von TLS verschlüsselt wird, ist die folgende zusätzliche Verarbeitung erforderlich:

  • Ein zusätzlicher Netzwerkroundtrip ist zum Zeitpunkt des Verbindungsaufbaus erforderlich.
  • Pakete, die von der Anwendung an die Instanz von SQL Server gesendet werden, müssen vom TLS-Stapel des Clients verschlüsselt und vom SERVER-TLS-Stapel entschlüsselt werden.
  • Pakete, die von der Instanz von SQL Server anwendung gesendet werden, müssen vom TLS-Stapel des Servers 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. Um ein Zertifikat für die Verwendung durch SQL Server installieren zu können, müssen Sie SQL Server-Konfigurations-Manager mit einem Konto ausführen, das über lokale Administratorrechte verfügt.

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 Öffentlichen Schlüsselzertifikate vieler 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 mit knoten mit den Namen test1.*Ihr Unternehmen*.com und test2.*Ihr Unternehmen*.com und einen virtuellen Server mit dem Namen virtsql verfügen, müssen Sie ein Zertifikat für virtsql.*Ihr Unternehmen*.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.

Hinweis

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 SQL Server TLS-Zertifikat laden können, muss das Zertifikat die folgenden Bedingungen erfüllen:

  • 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 ausgewertet, wenn eine Verbindung mit SQL Server mit Clientverbindungen hergestellt wird, die unter Angabe der Verschlüsselungsoption auf TRUE initiiert werden, es sei denn, sie wird von der Einstellung Serverzertifikat vertrauen 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. Um ein Platzhalterzertifikat zu verwenden, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib müssen Sie den Registrierungsschlüssel bearbeiten und den Fingerabdruck des Zertifikats ohne Leerzeichen in den Wert HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib eingeben.

    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.

Installieren auf einem einzelnen Server

Mit SQL Server 2019 (15.x) ist die Zertifikatverwaltung in die SQL Server-Konfigurations-Manager. SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) kann mit früheren Versionen von SQL Server. Informationen zum Hinzufügen eines Zertifikats für eine einzelne SQL Server-Konfigurations-Manager-Instanz finden Sie unter SQL Server Zertifikatverwaltung (Certificate Management, SQL Server Zertifikatverwaltung).

Wenn Sie SQL Server 2012 (11.x) bis SQL Server 2017 (14.x) verwenden und SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) nicht verfügbar ist, führen Sie die folgenden Schritte aus:

  1. Klicken Sie im Menü Start auf Ausführen, geben Sie in das Feld Öffnen den Wert MMC ein, und klicken Sie dann auf OK.

  2. Klicken Sie in der MMC-Konsole im Menü Datei auf Snap-In hinzufügen/entfernen.

  3. Klicken Sie im Dialogfeld Snap-In hinzufügen/entfernen auf Hinzufügen.

  4. Klicken Sie im Dialogfeld Eigenständiges Snap-In hinzufügen auf Zertifikate, und klicken Sie dann auf Hinzufügen.

  5. Klicken Sie im Dialogfeld Zertifikate-Snap-In auf Computerkonto, und klicken Sie dann auf Fertig stellen.

  6. Klicken Sie im Dialogfeld Eigenständiges Snap-In hinzufügen auf Schließen.

  7. Klicken Sie im Dialogfeld Snap-In hinzufügen/entfernen auf OK.

  8. Erweitern Sie im Dialogfeld Zertifikate-Snap-In die Option Zertifikate, erweitern Sie Eigene Zertifikate, und klicken Sie dann mit der rechten Maustaste auf Zertifikate, zeigen Sie auf Alle Aufgaben, und klicken Sie anschließend auf Importieren.

  9. Klicken Sie mit der rechten Maustaste auf das importierte Zertifikat, zeigen Sie auf Alle Aufgaben, und klicken Sie dann auf Privatschlüssel verwalten. Fügen Sie im Dialogfeld Sicherheit die Leseberechtigung für das Benutzerkonto hinzu, das vom SQL Server-Dienstkonto verwendet wird.

  10. 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 in die SQL Server-Konfigurations-Manager. SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) kann mit früheren Versionen von SQL Server. 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) bis SQL Server 2017 (14.x) verwenden und SQL Server-Konfigurations-Manager für SQL Server 2019 (15.x) nicht verfügbar ist, führen Sie die Schritte im Abschnitt Bereitstellen (Installieren) eines Zertifikats auf einem einzelnen Server für jeden Server aus.

Exportieren des Serverzertifikats

  1. Suchen Sie im Snap-In Zertifikate das Zertifikat im Ordner ZertifikatePersönlich, klicken Sie mit der rechten Maustaste auf das Zertifikat, zeigen Sie auf Alle Aufgaben, und klicken Sie dann auf Exportieren.

  2. 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 dem SQL Server 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.

  1. Erweitern Sie in SQL Server-Konfigurations-ManagerSQL Server Netzwerkkonfiguration, klicken Sie mit der rechten Maustaste auf Protokollefürserverinstanz, und wählen Sie eigenschaften aus.

  2. Wählen Sie im Dialogfeld Protocolsforinstance nameProperties auf der Registerkarte Zertifikat in der Dropdown-Dropdownleiste für das Feld Zertifikat das gewünschte Zertifikat aus, und klicken Sie dann auf OK.

  3. Aktivieren Sie auf der Registerkarte Flags im Feld ForceEncryption die Option Ja, und klicken Sie dann auf OK , um das Dialogfeld zu schließen.

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

  1. Kopieren Sie entweder das Originalzertifikat oder die exportierte Zertifikatsdatei auf den Clientcomputer.

  2. Installieren Sie auf dem Clientcomputer mithilfe des Zertifikate -Snap-Ins entweder das Stammzertifikat oder die exportierte Zertifikatsdatei.

  3. Klicken Sie im SQL Server-Konfigurations-Manager mit der rechten Maustaste auf SQL Server Native Client-Konfiguration, und klicken Sie dann auf Eigenschaften.

  4. Klicken Sie auf der Seite Flags im Feld Protokollverschlüsselung erzwingen auf Ja.

Verwenden von SQL Server Management Studio

Führen Sie die folgenden Schritte aus, um eine Verbindung in SQL Server Management Studio zu verschlüsseln:

  1. Klicken Sie auf der Symbolleiste des Objekt-Explorers auf Verbinden, und klicken Sie dann auf Datenbank-Engine.

  2. Vervollständigen Sie im Dialogfeld Verbindung mit Server herstellen die Verbindungseinstellungen, und klicken Sie dann auf Optionen.

  3. Klicken Sie auf der Registerkarte Verbindungseigenschaften auf Verbindung verschlüsseln.

Internetprotokollsicherheit (Internet Protocol Security, IPsec)

SQL Server Daten können während der Übertragung mitHILFE von IPSec verschlüsselt werden. IPSec wird vom Client- und Serverbetriebssystem bereitgestellt und erfordert keine SQL Server Konfiguration. Informationen zu IPSec finden Sie in der Windows-Dokumentation oder in der Netzwerkdokumentation.

Nächste Schritte