Zertifikatanforderungen für SQL Server
In diesem Artikel werden die Zertifikatanforderungen für SQL Server beschrieben sowie die Überprüfung, ob ein Zertifikat diese Anforderungen erfüllt.
Zertifikatanforderungen für SQL Server-Verschlüsselung
Für die Verwendung von TLS für 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 im Zertifikatspeicher des lokalen Computers oder im Zertifikatspeicher des SQL Server-Dienstkontos befinden. Der Zertifikatspeicher des lokalen Computers wird empfohlen, da so eine Neukonfiguration von Zertifikaten mit Änderungen des SQL Server-Startkontos vermieden wird.
Das SQL Server-Dienstkonto muss über die erforderliche Berechtigung für den Zugriff auf das TLS-Zertifikat verfügen. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.
Die aktuelle Systemzeit muss nach dem Wert der Eigenschaft Gültig ab und vor dem Wert der Eigenschaft Gültig bis des Zertifikats liegen. Weitere Informationen finden Sie unter Abgelaufene Zertifikate.
Hinweis
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 mithilfe der
KeySpec
-Option vonAT_KEYEXCHANGE
erstellt werden. Dies erfordert ein Zertifikat, das einen Legacy-Kryptografiespeicheranbieter zum Speichern des privaten Schlüssels verwendet. Normalerweise enthält die Schlüsselverwendungseigenschaft (KEY_USAGE) des Zertifikats auch die Schlüsselverschlüsselung (CERT_KEY_ENCIPHERMENT_KEY_USAGE
) und eine digitale Signatur (CERT_DIGITAL_SIGNATURE_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. Wenn Sie z. B. über einen Cluster mit zwei Knoten mit den Namen
test1.*<your company>*.com
undtest2.*<your company>*.com
und einen virtuellen Server mit dem Namen virtsql verfügen, müssen Sie auf beiden Knoten ein Zertifikat fürvirtsql.*<your company>*.com
installieren. Weitere Informationen zu SQL-Clustern finden Sie unter Vor dem Installieren des Failoverclusterings.Beim Herstellen einer Verbindung mit einem Verfügbarkeitsgruppenlistener sollten die Zertifikate, die für jeden teilnehmenden Serverknoten im Failovercluster bereitgestellt werden, auch eine Liste aller Verfügbarkeitsgruppenlistener enthalten, die im alternativen Antragstellernamen des Zertifikats festgelegt sind. Weitere Informationen finden Sie unter Listener und TLS/SSL-Zertifikate. Weitere Informationen zu SQL Always On finden Sie unter Herstellen einer Verbindung mit einem Always On-Verfügbarkeitsgruppenlistener.
Der alternative Antragstellername sollte alle Namen enthalten, die Ihre Clients zum Herstellen einer Verbindung mit einer SQL Server-Instanz verwenden können. Bei Verwendung von Verfügbarkeitsgruppen sollte der alternative Antragstellername den NetBIOS- und vollqualifizierten Domänennamen (FQDN) des localhost und der erstellten Listener enthalten.
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 auf jedem Client, der eine Verbindung mit SQL Server herstellt, das Zertifikat für öffentliche Schlüssel der Zertifizierungsstelle installieren, die das Serverzertifikat signiert hat.
Wichtig
SQL Server wird nicht gestartet, wenn ein Zertifikat im Computerspeicher vorhanden ist, aber nur einige Anforderungen in der obigen Liste erfüllt sind, und wenn es manuell für die Verwendung durch den SQL Server-Konfigurations-Manager oder Registrierungseinträge konfiguriert ist. Wählen Sie ein anderes Zertifikat aus, das alle Anforderungen erfüllt, oder entfernen Sie das von SQL Server verwendete Zertifikat, bis Sie ein Zertifikat bereitstellen können, das die Anforderungen erfüllt, oder ein selbst generiertes Zertifikat verwenden können, wie in Von SQL Server generierte selbstsignierte Zertifikate erläutert.
Überprüfen, ob ein Zertifikat die Anforderungen erfüllt
In SQL Server 2019 (15.x) und neueren Versionen überprüft der SQL Server-Konfigurations-Manager automatisch alle Zertifikatanforderungen während der Konfigurationsphase selbst. Wenn SQL Server nach dem Konfigurieren eines Zertifikats erfolgreich gestartet wird, ist dies ein guter Hinweis darauf, dass SQL Server dieses Zertifikat verwenden kann. Einige Clientanwendungen stellen jedoch möglicherweise noch andere Anforderungen an Zertifikate, die für die Verschlüsselung verwendet werden können, und je nach verwendeter Anwendung können unterschiedliche Fehler auftreten. In diesem Szenario müssen Sie der Supportdokumentation der Clientanwendung weitere Informationen zu diesem Thema entnehmen.
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 im Konsolenfenster ausgibt, der für die Problembehandlung bei verschiedenen Verbindungsfehlern 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 Anweisungen zum Herunterladen finden Sie unter Welcome to the CSS_SQL_Networking_Tools wiki (Willkommen beim CSS_SQL_Networking_Tools-Wiki).
certutil-Tool:
certutil.exe
ist ein Befehlszeilenprogramm, das als Teil der Zertifikatdienste installiert wird. Sie können mit „certutil.exe“ Zertifikatinformationen abspeichern und anzeigen. Verwenden Sie die-v
-Option, um detaillierte Informationen zu erhalten. Weitere Informationen finden Sie unter certutil.Zertifikate-Snap-In: Sie können auch das Zertifikate-Snap-In-Fenster 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 Vorgehensweise: Anzeigen von Zertifikaten mit dem MMC-Snap-In.
Weitere Informationen
Abgelaufene Zertifikate
SQL Server überprüft nur die Gültigkeit der Zertifikate zum Zeitpunkt der Konfiguration. Beispielsweise können Sie den Konfigurations-Manager nicht unter SQL Server 2019 (15.x) und höheren Versionen 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 bei jeder Verbindung und geben einen Fehler aus, wenn die SQL Server-Instanz für die Verwendung eines abgelaufenen Zertifikats für die Verschlüsselung konfiguriert ist. Sie sollten kein abgelaufenes Zertifikat zur SQL Server-Verschlüsselung verwenden.