Freigeben über


Zertifikatanforderungen für SQL Server

In diesem Artikel werden die Zertifikatanforderungen für SQL Server und die Überprüfung beschrieben, ob ein Zertifikat diese Anforderungen erfüllt.

Zertifikatanforderungen für die SQL Server-Verschlüsselung

Für die Verwendung von Transport Layer Security (TLS) für die SQL Server-Verschlüsselung müssen Sie ein Zertifikat (eines der drei digitalen Typen) bereitstellen, das die folgenden Bedingungen erfüllt:

  • Das Zertifikat muss sich entweder im Zertifikatspeicher des lokalen Computers oder im Zertifikatspeicher des SQL Server-Dienstkontos befinden. Es wird empfohlen, den lokalen Computerzertifikatspeicher zu speichern, da keine Zertifikate mit SQL Server-Startkontoänderungen neu konfiguriert werden.

  • Das SQL Server-Dienstkonto muss über die erforderliche Berechtigung für den Zugriff auf das TLS-Zertifikat verfügen. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen mit SQL Server durch Importieren eines Zertifikats.

  • Die aktuelle Systemzeit muss nach dem Wert der Eigenschaft "Valid from" und vor dem Wert der Eigenschaft "Valid to" des Zertifikats liegen. Weitere Informationen finden Sie unter "Abgelaufene Zertifikate".

    Hinweis

    Das Zertifikat muss für die Serverauthentifizierung vorgesehen sein. Dazu muss die Eigenschaft "Enhanced Key Usage " des Zertifikats die Serverauthentifizierung (1.3.6.1.5.5.7.3.1) angeben.

  • Das Zertifikat muss mit der KeySpec-Option von AT_KEYEXCHANGE erstellt werden. Dies erfordert ein Zertifikat, das einen älteren kryptografischen Speicheranbieter zum Speichern des privaten Schlüssels verwendet. In der Regel umfasst die Schlüsselverwendungseigenschaft (KEY_USAGE) des Zertifikats auch schlüsselbasierte Enzipherierung (CERT_KEY_ENCIPHERMENT_KEY_USAGE) und eine digitale Signatur (CERT_DIGITAL_SIGNATURE_KEY_USAGE).

  • Der Subject Alternative Name sollte alle Namen enthalten, die Ihre Clients zum Herstellen einer Verbindung mit einer SQL Server-Instanz verwenden.

Der Client muss in der Lage sein, den Besitz des vom Server verwendeten Zertifikats zu überprüfen. Wenn der Client über das Öffentliche Schlüsselzertifikat der Zertifizierungsstelle verfügt, die das Serverzertifikat signiert hat, ist keine weitere Konfiguration 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 nicht über das Öffentliche Schlüsselzertifikat verfügt, müssen Sie das Zertifikat des öffentlichen Schlüssels der Zertifizierungsstelle installieren, das das Serverzertifikat auf jedem Client signiert hat, der eine Verbindung mit SQL Server herstellen soll.

Wichtig

SQL Server wird nicht gestartet, wenn ein Zertifikat im Computerspeicher vorhanden ist, aber nur einige Anforderungen in der obigen Liste erfüllt und wenn es manuell für die Verwendung durch SQL Server Configuration Manager oder über Registrierungseinträge konfiguriert ist. Wählen Sie ein anderes Zertifikat aus, das alle Anforderungen erfüllt, oder entfernen Sie das Zertifikat, das von SQL Server verwendet wird, bis Sie ein Zertifikat bereitstellen können, das anforderungen erfüllt oder ein selbst generiertes Zertifikat wie in SQL Server generierte selbstsignierte Zertifikate verwendet.

AlwaysOn-Verfügbarkeitsgruppe

Wenn Ihre SQL Server-Instanz Teil einer AlwaysOn-Verfügbarkeitsgruppe ist, können Sie eine der folgenden Methoden verwenden, um Ihr Zertifikat zu erstellen:

  • Methode 1: Verwenden Sie ein Zertifikat für alle Replikate der Verfügbarkeitsgruppe. Der allgemeine Name ist willkürlich wählbar und kann daher jeden beliebigen Platzhalterwert annehmen. Der Hostname und der FQDN aller SQL Server-Replikaten in der Verfügbarkeitsgruppe und die Namen der Verfügbarkeitsgruppen-Listener sollten im Subject Alternative Name des Zertifikats enthalten sein. Wenn der Verfügbarkeitsgruppe zusätzliche Replikate hinzugefügt werden, nachdem das ursprüngliche Zertifikat generiert wurde, muss das Zertifikat mit den Namen aller Replikate neu generiert und in jedes Replikat neu importiert werden. Das Zertifikat muss auch in den Zertifikatspeicher auf allen Clients importiert werden, die eine Verbindung mit dem Verfügbarkeitsgruppenreplikat oder dem Verfügbarkeitsgruppenlistener herstellen, es sei denn, das Zertifikat ist von einer öffentlichen oder offiziellen Zertifizierungsstelle (Ca) signiert. Wenn Sie die Verfügbarkeitsgruppenreplikate und Listenernamen nicht im Zertifikat einschließen, müssen Sie einen der Werte des Alternativen Antragstellernamens in die Werte der HostNameInCertificate oder den Pfad zum Zertifikat in die ServerCertificate der Verbindungszeichenfolge aufnehmen, wenn Sie eine Verbindung mit der Verfügbarkeitsgruppe herstellen. Das Angeben von Namen im Zertifikat ist der empfohlene Ansatz.

    Im Folgenden sehen Sie ein Beispiel für die Eigenschaften, die ein ordnungsgemäß konfiguriertes Zertifikat für eine Verfügbarkeitsgruppe mit zwei Servern mit dem Namen test1.<your company>.com und test2.<your company>.comdem Namen eines Verfügbarkeitsgruppenlisteners aglistener.<your company>.comdefinieren:

    CN = <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name = aglistener.<your company>.com 
    DNS Name = test1.<your company>.com
    DNS Name = test2.<your company>.com
    DNS Name = aglistener
    DNS Name = test1
    DNS Name = test2
    
  • Methode 2: Verwenden Sie für jedes Replikat der Verfügbarkeitsgruppe ein separates Zertifikat. Das Hinzufügen von Replikaten zu einer Verfügbarkeitsgruppe nach dem Generieren eines Zertifikats ist einfacher, wenn Sie separate Zertifikate verwenden, da Sie nur ein Zertifikat für das neue Replikat generieren müssen, anstatt alle Zertifikate für alle vorhandenen Replikate zu ändern. Der allgemeine Name ist willkürlich wählbar und kann daher jeden beliebigen Platzhalterwert annehmen. Der Hostname und der FQDN der jeweiligen SQL Server-Instanz und die Namen der Verfügbarkeitsgruppenlistener müssen im Alternativen Antragstellernamen des Zertifikats für jedes jeweilige Replikat enthalten sein. Importieren Sie jedes Zertifikat in das jeweilige Replikat, und, es sei denn, das Zertifikat wird von einer öffentlichen oder offiziellen Zertifizierungsstelle (CA) unterzeichnet, importieren Sie dann sämtliche Zertifikate in alle Zertifikatspeicher auf allen Clients, die eine Verbindung mit den Replikaten herstellen, oder mit dem Listenendpunkt für Verfügbarkeitsgruppen.

    Im Folgenden sind Beispiele für die Eigenschaften aufgeführt, die ordnungsgemäß konfigurierte Zertifikate für eine Verfügbarkeitsgruppe mit zwei Instanzen mit dem Namen test1.<your company>.com und test2.<your company>.comdem Namen eines Verfügbarkeitsgruppenlisteners aglistener.<your company>.comdefinieren:

    Zertifikat für Test1

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test1.<your company>.com 
    DNS Name= aglistener.<your company>.com
    DNS Name= aglistener
    DNS Name= test1
    

    Zertifikat für Test 2:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test2.<your company>.com 
    DNS Name= aglistener.<your company>.com 
    DNS Name= aglistener
    DNS Name= test2 
    

Failoverclusterinstanz

Wenn SQL Server als Failoverclusterinstanz konfiguriert ist, müssen Sie das Serverzertifikat mit dem Hostnamen oder vollqualifizierten DNS-Namen (FQDN) des virtuellen Servers auf allen Knoten im Failovercluster installieren. und die Zertifikate müssen auf allen Knoten des Failoverclusters bereitgestellt werden. Wenn Sie zum Beispiel über einen Cluster mit zwei Knoten verfügen, wobei die Knoten test1.<your company>.com und test2.<your company>.com benannt sind, und einen virtuellen Server mit dem Namen virtsql haben, müssen Sie auf beiden Knoten ein Zertifikat für virtsql.<your company>.com installieren.

Importieren Sie das Zertifikat in den Failovercluster in der Sequenz, die im Konfigurieren des SQL Server-Datenbankmoduls zum Verschlüsseln von Verbindungen dokumentiert ist.

Nachfolgend sehen Sie ein Beispiel für die Eigenschaften, die ein ordnungsgemäß konfiguriertes Zertifikat für eine Failoverclusterinstanz definieren:

CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql

Weitere Informationen zu SQL-Clustern finden Sie unter Vor der Installation des Failover-Clusterings.

Überprüfen, ob ein Zertifikat die Anforderungen erfüllt

In SQL Server 2019 (15.x) und höheren Versionen überprüft SQL Server Configuration Manager automatisch alle Zertifikatanforderungen während der Konfigurationsphase selbst. Wenn SQL Server nach der Konfiguration eines Zertifikats erfolgreich gestartet wird, ist es ein guter Hinweis darauf, dass SQL Server dieses Zertifikat verwenden kann. Einige Clientanwendungen verfügen jedoch möglicherweise noch über andere Anforderungen für Zertifikate, die für die Verschlüsselung verwendet werden können, und Je nach verwendeter Anwendung treten möglicherweise unterschiedliche Fehler auf. In diesem Szenario müssen Sie die Supportdokumentation der Clientanwendung überprüfen, um weitere Informationen zum Thema zu erhalten.

Sie können eine der folgenden Methoden verwenden, um die Gültigkeit des Zertifikats für die Verwendung mit SQL Server zu überprüfen:

  • sqlcheck tool: sqlcheck ist ein Befehlszeilentool, das die aktuellen Computer- und Dienstkontoeinstellungen untersucht und einen Textbericht an das Konsolenfenster erstellt, das für die Problembehandlung verschiedener Verbindungsfehler nützlich ist. Die Ausgabe enthält die folgenden Informationen zu Zertifikaten:

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    Weitere Informationen zu den Funktionen des Tools und zum Herunterladen von Anweisungen finden Sie unter "Willkommen beim CSS_SQL_Networking_Tools Wiki".

  • certutil tool: certutil.exe ist ein Befehlszeilenprogramm, das als Teil der Zertifikatdienste installiert ist. Sie können certutil.exe verwenden, um Zertifikatinformationen auszugeben und anzuzeigen. Verwenden Sie die -v Option, um detaillierte Informationen zu erhalten. Weitere Informationen finden Sie unter certutil.

  • Zertifikat-Snap-In: Sie können auch das Snap-In "-Fenster "Zertifikate" verwenden, um weitere Informationen zu Zertifikaten in verschiedenen Zertifikatspeichern auf dem Computer anzuzeigen. Dieses Tool zeigt jedoch keine KeySpec-Informationen an. Weitere Informationen zum Anzeigen von Zertifikaten mit dem MMC-Snap-In finden Sie unter How to: View certificates with the MMC snap-in.

Importieren eines Zertifikats mit einem anderen Namen für den Hostnamen

Derzeit können Sie ein Zertifikat nur mit dem SQL Server Configuration Manager importieren, wenn der Antragstellername des Zertifikats mit dem Hostnamen des Computers übereinstimmt.

Wenn Sie ein Zertifikat mit einem anderen Betreffnamen verwenden möchten, führen Sie die folgenden Schritte aus:

  1. Importieren Sie das Zertifikat mithilfe des Snap-Ins "Zertifikate" in den Zertifikatspeicher des lokalen Computers.

  2. Erweitern Sie in SQL Server Configuration Manager die SQL Server-Netzwerkkonfiguration , klicken Sie mit der rechten Maustaste auf die Sql Server-Instanz, und wählen Sie dann "Eigenschaften" aus, um das Dialogfeld "Protokolle für <instance_name> Eigenschaften " zu öffnen.

  3. Wählen Sie auf der Registerkarte " Zertifikat " das Zertifikat aus, das Sie aus der Dropdownliste " Zertifikat " in den Zertifikatspeicher importiert haben:

    Screenshot der Registerkarte

Wenn Sie ein Zertifikat mit einem anderen Namen in den Hostnamen importieren, wird die folgende Fehlermeldung angezeigt:

The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server
Certificate name: random-name
Computer name: sqlserver.domain.com

Abgelaufene Zertifikate

SQL Server überprüft nur die Gültigkeit der Zertifikate zum Zeitpunkt der Konfiguration. Sie können z. B. sql Server Configuration Manager auf SQL Server 2019 (15.x) und höheren Versionen nicht verwenden, um ein abgelaufenes Zertifikat bereitzustellen. SQL Server wird weiterhin ohne Probleme ausgeführt, wenn das Zertifikat abläuft, nachdem es bereits bereitgestellt wurde. Einige Clientanwendungen wie Power BI überprüfen jedoch die Gültigkeit des Zertifikats für jede Verbindung und lösen einen Fehler aus, wenn die SQL Server-Instanz für die Verwendung eines abgelaufenen Zertifikats für die Verschlüsselung konfiguriert ist. Es wird empfohlen, kein abgelaufenes Zertifikat für die SQL Server-Verschlüsselung zu verwenden.

Nächster Schritt