it-swarm.com.de

SSL-Zertifikat fehlt in der Dropdown-Liste in SQL Server Configuration Manager

Ich versuche, SQL Server 2014 so zu konfigurieren, dass ich mich remote mit SSL verbinden kann. Auf dem Server ist ein gültiges Wildcard-Zertifikat installiert, und der Domänenname des Zertifikats (example.com) entspricht dem FQDN des Servers (test.windows-server-test.example.com).

Das Problem ist, dass das Zertifikat in SQL Server Configuration Manager nicht aufgeführt ist. Daher kann ich es nicht auswählen.

 blank dropdown

Das heißt, ich stehe in Schritt 2.e.2 von diesem MS-Tutorial

9
Jonah

Nach der Kommunikation in Kommentaren kann ich davon ausgehen, dass Ihr Hauptproblem der CN Teil des Zertifikats ist, das Sie verwenden. Für eine erfolgreiche TLS-Kommunikation für IIS Server gelten keine so starken Einschränkungen wie für SQL Server.

Microsoft verlangt (siehe hier ), dass Der Name des Zertifikats muss der vollständig qualifizierte Domänenname (FQDN) des Computers sein. Es bedeutet, dass der Teil Subject des Zertifikats folgendermaßen aussieht: CN = test.widows-server-test.example.com, wobei test.widows-server-test.example.com ist der vollqualifizierte Domänenname Ihres Computers. Es reicht nicht aus, dass Sie beispielsweise CN = * .example.com und Subject Alternative Name verwenden, die DNS Name=*.example.com und DNS Name=test.widows-server-test.example.com, DNS Name=test1.widows-server-test.example.com, DNS Name=test.widows-server-test2.example.com usw. enthält. Ein solches Zertifikat ist für TLS in Ordnung, aber SQL Server verwirft es. Siehe den Artikel , der enge Probleme beschreibt.

Ich empfehle Ihnen, ein selbstsigniertes Zertifikat mit CN zu erstellen, das dem FQDN des SQL Servers entspricht, und um zu überprüfen, ob das Zertifikat vom SQL Server-Konfigurations-Manager angezeigt wird.

AKTUALISIERT: Ich habe das Problem in Bezug auf Process Monitor etwas genauer analysiert und herausgefunden, dass zwei Werte in der Registrierung für SQL Server Configuration Manager wichtig sind: die Werte Hostname und Domain unter dem Schlüssel

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Wenn ich Domain und Hostname in die Werte ändere, die CN des Zertifikats entsprechen, wird das Zertifikat bereits im SQL Server-Konfigurations-Manager angezeigt. Es könnte nicht alle Probleme sein, aber es zeigt, dass SQL Server als Webserver (IIS zum Beispiel) viel mehr benötigt.

AKTUALISIERT 2: Ich habe das Problem noch einmal genauer untersucht und ich glaube, ich habe den Weg gefunden, wie man ein allgemeines SSL-Zertifikat konfigurieren kann, das Sie bereits haben (zum Beispiel kostenloses SSL-Zertifikat von Let's Encrypt , StartSSL oder ein anderes).

Es ist wichtig zu unterscheiden, was SQL Server Configuration Manager von der für SQL Server erforderlichen Konfiguration unterscheidet. Die Registerkarte Zertifikat der Eigenschaften des Konfigurationsmanagers weist weitere Einschränkungen als SQL Server auf. Ich beschreibe oben nur die Einschränkungen von SQL Server Configuration Manager, aber man kann die Konfiguration direkt in der Registry vornehmen, um häufiger ein SSL/TLS-Zertifikat von SQL Server zu verwenden. Ich beschreibe unten, wie man das machen kann.

Was man tun muss, kann man in der Registry unter dem Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib, wobei der Teil MSSQL12.SQL2014 in Ihrem Fall ein wenig anders sein kann. Der SQL Server-Konfigurations-Manager hilft uns, zwei Werte in der Registrierung festzulegen: ForceEncryption und Certificate:

 enter image description here

Der Certificate-Wert ist SHA1-Hashwert, der durch Untersuchen der Eigenschaften des Zertifikats gefunden werden kann:

 enter image description here

oder erweiterte Eigenschaften des Zertifikats, die Sie durch Verwendung von certutil.exe -store My sehen:

 enter image description here

Man muss nur den Wert "Cert Hash (sha1)" kopieren, alle Leerzeichen entfernen und als Wert von Certificate in der Registry platzieren. Nachdem Sie die Einstellungen vorgenommen und den SQL Server-Windows-Dienst neu gestartet haben, sehen Sie in der Datei ERRORLOG im Verzeichnis C:\Program Files\Microsoft SQL Server\...\MSSQL\Log die Zeile ähnlich

2016-04-25 21: 44: 25.89 Server Das Zertifikat [Cert Hash (sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA"] wurde erfolgreich geladen zur Verschlüsselung.

11
Oleg

Ich möchte dies für zukünftige Benutzer hinzufügen, die möglicherweise auf ein ähnliches Problem stoßen, auf das ich mit SQL 2016 SP2 und einem Failover-Cluster stieß. Der zur Registrierung hinzugefügte Zertifikatabdruck musste aus Großbuchstaben bestehen.

Hoffe das hilft dem nächsten Kerl.

2
Joe Mroczek

Nachdem ich die Schritte im Abschnitt "Aktualisiert 2" der akzeptierten Antwort ausgeführt habe, kann ich den SQL Server-Dienst nicht starten. In der Ereignisanzeige sind folgende Fehler aufgetreten:

Benutzerdefiniertes Zertifikat [Cert Hash (sha1) "Fingerabdruck des Zertifikats"] kann nicht geladen werden. Der Server akzeptiert keine Verbindung. Sie sollten überprüfen, ob das Zertifikat korrekt installiert ist. Siehe "Konfigurieren des Zertifikats zur Verwendung durch SSL" in der Onlinedokumentation.

TDSSNIClient-Initialisierung fehlgeschlagen mit Fehler 0x80092004, Statuscode 0x80. Grund: Die SSL-Unterstützung kann nicht initialisiert werden. Objekt oder Eigenschaft kann nicht gefunden werden.

TDSSNIClient-Initialisierung fehlgeschlagen mit Fehler 0x80092004, Statuscode 0x1. Grund: Die Initialisierung ist mit einem Infrastrukturfehler fehlgeschlagen. Suchen Sie nach früheren Fehlern. Objekt oder Eigenschaft kann nicht gefunden werden.

fehler im SQL Server-Fehlerprotokoll:

Der Server konnte das zum Einleiten einer SSL-Verbindung erforderliche Zertifikat nicht laden. Es gab den folgenden Fehler zurück: 0x8009030d. Überprüfen Sie die Zertifikate auf ihre Gültigkeit.

googelte es und fand heraus eine Lösung :

Stellen Sie sicher, dass das Windows-Konto, auf dem der SQL Server-Dienst ausgeführt wird (NT Service\MSSQLServer in meinem Fall) hat vollständige Berechtigungen für die folgenden Ordner/Registrierungseinträge:

  1. C:\Programme\Microsoft SQL Server [Ihre SQL Server-Instanz]\MSSQL \
  2. C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
  3. HKLM\System\CurrentControlSet\Services\WinSock2\Parameters

Ich überprüfte Nr. 1 NT Service\MSSQLSERVER hatte bereits die Erlaubnis.

Ich überprüfte Nr. 2, NT Service\MSSQLSERVER hat keine Berechtigung und ich habe die Berechtigung hinzugefügt. Es tauchte ein Fehler auf, der besagte, dass einer der Dateien in diesem Ordner der Vorgang verweigert wurde, aber ich habe ihn einfach ignoriert (sonst kann ich nichts tun).

Ich habe Nr. 3 nicht überprüft und versucht, SQL Server zu starten, es hat funktioniert !!

1
Ricky

Ich meldete mich mit dem SQL Server-Domänenkonto am Server an (musste das Konto lokalen Admins vorübergehend hinzufügen) und importierte das Zertifikat im persönlichen Ordner des SQL Server-Dienstkontos. Der Server wurde neu gestartet, und dann konnte SQL Server das Zertifikat sehen. Hoffe es hilft jemandem. 

0
Mary Nobakht

Ein weiterer Fehlermodus ist die Schlüssellänge. SQL erfordert eine Schlüssellänge von mindestens 2048. Bei deaktiviertem DH-Kanal.

0
user2702772