Fehler "Das vom Remoteserver empfangene Zertifikat wurde von einer nicht vertrauenswürdigen Zertifizierungsstelle ausgegeben", wenn Sie eine Verbindung mit SQL Server herstellen.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2007728

Zusammenfassung

Dieser Artikel hilft Ihnen, den Fehler "Das vom Remoteserver empfangene Zertifikat wurde von einer nicht vertrauenswürdigen Zertifizierungsstelle ausgestellt" zu beheben, die auftritt, wenn ein Client eine verschlüsselte (TLS)-Verbindung mit SQL Server herstellt. Der Fehler bedeutet, dass der Client das Zertifikat, das die SQL Server Instanz während des TLS-Handshakes darstellt, nicht überprüfen kann, in der Regel weil die ausstellende Zertifizierungsstelle nicht im Speicher für vertrauenswürdige Stammzertifizierungsstellen des Clients enthalten ist oder weil SQL Server ein selbstsigniertes Zertifikat verwendet.

Sie beheben den Fehler, indem Sie das ausstellende Zertifizierungsstellenzertifikat auf dem Clientcomputer installieren, indem Sie dem Serverzertifikat ohne Überprüfung vertrauen (die Einstellung für das Vertrauensserverzertifikat ) oder die Verschlüsselungskonfiguration auf dem Client oder server ändern. Neuere Versionen mehrerer Clienttreiber und -tools haben ihre Standardeinstellungen so geändert, dass Verschlüsselung erforderlich ist. Daher wird dieser Fehler nach einem Upgrade eines Treibers oder Tools möglicherweise angezeigt, obwohl sich auf dem Server nichts geändert hat.

Symptome

Wenn Sie eine Verbindung mit SQL Server herstellen, wird möglicherweise die folgende Fehlermeldung angezeigt:

Eine Verbindung mit dem Server wurde erfolgreich hergestellt, aber dann trat während des Anmeldevorgangs ein Fehler auf. (Anbieter: SSL-Anbieter, Fehler: 0 – Die Zertifikatkette wurde von einer nicht vertrauenswürdigen Autorität ausgestellt.) (.Net SqlClient Datenanbieter)

Darüber hinaus wird die folgende Fehlermeldung im Windows Systemereignisprotokoll protokolliert:

Log Name:      System  
Source:        Schannel  
Date:          10/13/2020 3:03:31 PM  
Event ID:      36882  
Task Category: None  
Level:         Error  
Keywords:  
User:        USERNAME  
Computer:     COMPUTERNAME  
Description:  
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.

Ursache

Dieser Fehler tritt auf, wenn Sie eine verschlüsselte Verbindung mit SQL Server mithilfe eines Zertifikats herstellen, das der Client nicht überprüfen kann. Dieses Verhalten tritt in den folgenden Szenarien auf:

Szenario Serverseitige Verschlüsselung Clientseitige Verschlüsselung Bescheinigungstyp Zertifizierungsautorität, die im Speicher der vertrauenswürdigen Stammzertifizierungsstellen vorhanden ist
1 Ja No Ein Zertifikat aus einer Quelle, dem der Client nicht vertraut (die ausstellende Behörde wird nicht in vertrauenswürdigen Stammzertifizierungsstellen auf dem Clientcomputer aufgeführt) No
2 No Ja Ein selbstsigniertes Zertifikat, das SQL Server generiert Nein. Selbstsignierte Zertifikate werden in diesem Speicher nicht angezeigt.

Wenn ein Client eine verschlüsselte Verbindung mit SQL Server herstellt, erstellt Secure Channel (Schannel) die Liste der vertrauenswürdigen Zertifizierungsstellen, indem er den Speicher für vertrauenswürdige Stammzertifizierungsstellen auf dem lokalen Computer durchsucht. Während des TLS-Handshakes sendet der Server sein Zertifikat für öffentliche Schlüssel an den Client. Der Aussteller eines Zertifikats mit öffentlichem Schlüssel wird als Zertifizierungsstelle (Ca) bezeichnet. Der Client muss bestätigen, dass er der Zertifizierungsstelle vertraut, was sie tut, indem er die öffentlichen Schlüssel vertrauenswürdiger Zertifizierungsstellen im Voraus kennt. Wenn Schannel ein Zertifikat erkennt, das eine nicht vertrauenswürdige Zertifizierungsstelle ausgestellt hat, z. B. in den vorherigen beiden Szenarien, erhalten Sie die im Abschnitt "Symptome" aufgeführte Fehlermeldung.

Wenn kein geeignetes Zertifikat konfiguriert oder erkannt wird, generiert die Datenbank-Engine während des Starts ein selbstsigniertes Fallbackzertifikat. Es verwendet dieses Zertifikat zum Verschlüsseln von Anmeldeinformationen und, wenn die serverseitige oder clientseitige Verschlüsselung aktiviert ist, die gesamte Verbindung. Kein Client vertraut standardmäßig einem selbstsignierten Zertifikat, weshalb dieser Fehler bei einer Standardinstallation von SQL Server auftreten kann, auch wenn der Client und der Server auf demselben Computer ausgeführt werden. Weitere Informationen finden Sie unter Login packet encryption versus data packet encryption.

Warum dieser Fehler nach einem Treiber- oder Toolupgrade angezeigt wird

Die Clienttreiber- und Toolversionen in der folgenden Tabelle haben ihre Standardwerte geändert, um Verschlüsselung zu erfordern. Nachdem Sie ein Upgrade auf eine dieser Versionen durchgeführt haben, verschlüsselt der Client die Verbindung und überprüft das Serverzertifikat, obwohl die Serverkonfiguration nicht geändert wurde. In früheren Versionen war standardmäßig keine Verschlüsselung erforderlich, daher wurde das Zertifikat erst überprüft, wenn Sie explizit eine Verschlüsselung angefordert haben.

Clienttreiber oder -tool Version Standardverschlüsselungsverhalten
Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL19) 19 und höhere Versionen Encrypt ist standardmäßig Mandatory
Microsoft ODBC-Treiber für SQL Server 18 und spätere Versionen Encrypt ist standardmäßig Mandatory
Microsoft.Data.SqlClient 4.0 und höhere Versionen Encrypt ist standardmäßig True
SQL Server Management Studio (SSMS) 20 und spätere Versionen Verschlüsselung ist standardmäßig auf Erforderlich eingestellt

Wenn dieser Fehler unmittelbar nach dem Migrieren einer Anwendung von SQL Server Native Client 11.0 (SNAC) zu Microsoft OLE DB-Treiber 19 oder Microsoft ODBC-Treiber 18 angezeigt wird, lesen Sie die Zertifikatkette, die nach dem Treiberupgrade nicht vertrauenswürdig ist.

SNAC wird nicht mit SQL Server 2022 (16.x) und höheren Versionen oder mit SSMS 19 und höheren Versionen ausgeliefert und wird nicht für die neue Entwicklung empfohlen. Verwenden Sie den Microsoft OLE DB-Treiber für SQL Server, den Microsoft ODBC-Treiber für SQL Server oder Microsoft.Data.SqlClient stattdessen. Weitere Informationen finden Sie unter Supportrichtlinien für SQL Server nativen Client.

Lösung

Wenn Sie absichtlich entweder ein Zertifikat von einer nicht vertrauenswürdigen Autorität oder ein selbstsigniertes Zertifikat verwenden, um Verbindungen mit SQL Server zu verschlüsseln, verwenden Sie eine der folgenden Optionen:

Option 1: Installieren der Zertifizierungsstelle auf dem Clientcomputer

Fügen Sie für Szenario 1 die Zertifizierungsstelle dem Speicher „Vertrauenswürdige Stammzertifizierungsstellen“ auf dem Clientcomputer hinzu, der die verschlüsselte Verbindung initiiert. Führen Sie dazu die Verfahren Schritt 1: Exportieren Sie das Serverzertifikat in eine Datei und Schritt 2: Installieren Sie die Stammzertifizierungsstelle (CA) auf dem Clientcomputer in dieser Reihenfolge aus.

Schritt 1: Exportieren des Serverzertifikats in eine Datei

Exportieren Sie auf dem SQL Server-Computer das Zertifikat, das von SQL Server verwendet wird, in eine Datei. In den folgenden Schritten wird caCert.cer als Beispieldateiname verwendet. Diese Datei ist erst vorhanden, wenn Sie sie in diesem Verfahren erstellen. Sie wählen den Namen und den Speicherort aus.

  1. Wählen Sie "Start" aus, geben Sie "mmc" ein, und öffnen Sie dann Microsoft Management Console.

  2. Wählen Sie Datei>Snap-Ins hinzufügen/entfernen aus.

  3. Wählen Sie in der Liste Verfügbare Snap-InsZertifikate und dann Hinzufügen aus.

  4. Wählen Sie "Computerkonto" aus, wählen Sie "Weiter" aus, wählen Sie " Lokaler Computer" aus: (der Computer, auf dem diese Konsole ausgeführt wird), und wählen Sie dann "Fertig stellen" aus.

    Notiz

    SQL Server Zertifikate werden im Lokalen Computer\Persönlichen Zertifikatspeicher installiert. Wenn Sie "Mein Benutzerkonto" auswählen, öffnet MMC einen anderen Zertifikatspeicher, und das SQL Server Zertifikat wird nicht angezeigt.

  5. Wählen Sie "OK " aus, um das Dialogfeld "Snap-Ins hinzufügen" oder "Entfernen " zu schließen.

  6. Erweitern Sie im linken Bereich Zertifikate (lokaler Computer), erweitern Sie "Persönlich", und wählen Sie dann "Zertifikate" aus.

  7. Klicken Sie mit der rechten Maustaste auf das Zertifikat, das SQL Server verwendet, und wählen Sie dann "Alle Aufgaben exportieren">aus.

    Tip

    Um das von SQL Server verwendete Zertifikat zu identifizieren, öffnen Sie SQL Server-Konfigurations-Manager, erweitern Sie SQL Server Netzwerkkonfiguration, klicken Sie mit der rechten Maustaste auf "Protokolle", wählen Sie "<>Eigenschaften" aus, und wählen Sie dann die Registerkarte "Zertifikat" aus. Wenn das SQL Server Fehlerprotokoll den Eintrag "Ein selbst generiertes Zertifikat wurde für die Verschlüsselung erfolgreich geladen" enthält, verwendet SQL Server ein generiertes Fallbackzertifikat. Sie können dieses Zertifikat nicht exportieren. Verwenden Sie also stattdessen Option 2 oder Option 3 .

  8. Wählen Sie "Weiter" aus, um über die Willkommensseite des Zertifikatexport-Assistenten zu navigieren.

  9. Bestätigen Sie, dass Nein, der private Schlüssel nicht exportiert wird, und wählen Sie dann "Weiter" aus.

  10. Stellen Sie sicher, dass entweder DER-codierte binäre X.509 (. CER) oder Base-64-codierte X.509 (. CER) ist ausgewählt, und wählen Sie dann "Weiter" aus.

  11. Geben Sie einen Exportdateinamen ein, z. B. caCert.cer.

  12. Wählen Sie "Weiter" und dann " Fertig stellen " aus, um das Zertifikat zu exportieren.

  13. Kopieren Sie die exportierte .cer Datei auf den Clientcomputer.

Schritt 2: Installieren Sie das Stammzertifizierungsstellenzertifikat (CA) auf dem Clientcomputer

  1. Öffnen Sie auf dem Clientcomputer MMC, wählen Sie das Snap-In "Datei>hinzufügen/Entfernen" aus, wählen Sie "Zertifikate " in der Liste "Verfügbare Snap-Ins" und dann "Hinzufügen" aus.

  2. Wählen Sie im Dialogfeld Zertifikat-Snap-In " Computerkonto" und dann "Weiter" aus.

  3. Wählen Sie im Bereich Computer auswählen die Option Lokaler Computer: (der Computer, auf dem diese Konsole ausgeführt wird) aus, und klicken Sie dann auf Fertig stellen.

  4. Wählen Sie "OK " aus, um das Dialogfeld "Snap-Ins hinzufügen" oder "Entfernen " zu schließen.

  5. Erweitern Sie im linken Bereich von MMC den Knoten „Zertifikate (Lokaler Computer)“.

  6. Erweitern Sie den Knoten „Vertrauenswürdige Stammzertifizierungsstellen“, klicken Sie mit der rechten Maustaste auf den Unterordner „Zertifikate“, wählen Sie „Alle Aufgaben“ aus, und wählen Sie dann „Importieren“ aus.

  7. Wählen Sie im Zertifikatimport-Assistenten auf der Willkommensseite"Weiter" aus.

  8. Wählen Sie auf der Seite "Zu importierende Datei" die Option "Durchsuchen" aus.

  9. Navigieren Sie zum Speicherort der caCert.cer Zertifikatdatei, wählen Sie die Datei aus, und wählen Sie dann "Öffnen" aus.

  10. Wählen Sie auf der Seite "Datei zum Importieren" die Option "Weiter" aus.

  11. Auf der Seite „Zertifikatspeicher“ übernehmen Sie die Standardauswahl, und wählen Sie dann „Weiter“ aus.

  12. Wählen Sie auf der Seite „Zertifikatimport-Assistent abschließen“ die Option „Fertig stellen“ aus.

Option 2: Vertrauen Sie dem Serverzertifikat, ohne es zu überprüfen.

Legen Sie für Szenarien 1 und 2 die Einstellung für das Trust Server-Zertifikat in Ihrer Clientanwendung fest. Diese Einstellung behält die Verbindung verschlüsselt, überspringt jedoch die Zertifikatüberprüfung. Der Schlüsselwortname und die akzeptierten Werte hängen von der Clientbibliothek ab:

Clientbibliothek Verbindungsparameter-Schlüsselwort
Microsoft.Data.SqlClient TrustServerCertificate=True
Microsoft ODBC-Treiber für SQL Server TrustServerCertificate=yes
Microsoft OLE DB-Treiber für SQL Server (Anbieterzeichenfolge) TrustServerCertificate=yes
Microsoft OLE DB-Treiber für SQL Server (ADO oder IDataInitialize) Trust Server Certificate=true
Microsoft JDBC-Treiber für SQL Server trustServerCertificate=true

Wenn Sie mithilfe von SQL Server Management Studio (SSMS) 20 oder einer neueren Version eine Verbindung herstellen, aktivieren Sie auf der Seite Anmeldung des Dialogfelds Mit Server verbinden das Kontrollkästchen Serverzertifikat vertrauen. Wählen Sie in früheren Versionen von SSMS im Fenster "Verbindung mit Server verbinden" die Option "Optionen" aus, wählen Sie die Registerkarte "Verbindungseigenschaften" und dann "Serverzertifikat vertrauen" aus.

Weitere Informationen zum Konfigurieren dieser Einstellung für Ihre Clientbibliothek finden Sie in den folgenden Artikeln:

Notiz

Die Einstellung " Trust Server Certificate " deaktiviert die Verschlüsselung nicht. Die Verbindung bleibt verschlüsselt, der Client überprüft jedoch nicht die Identität des Servers.

Vorsicht

Verschlüsselte Verbindungen, die ein selbstsigniertes Zertifikat verwenden, bieten keine starke Sicherheit. Sie sind anfällig für Man-in-the-Middle-Angriffe. Verlassen Sie sich nicht auf TLS mit selbstsignierten Zertifikaten in einer Produktionsumgebung oder auf Servern, die mit dem Internet verbunden sind.

Option 3: Ändern der Verschlüsselungskonfiguration

Wenn die konfiguration, die in den vorherigen Abschnitten beschrieben wird, unbeabsichtigt ist, verwenden Sie eine der folgenden Optionen, um dieses Problem zu beheben:

  • Konfigurieren Sie die Datenbank-Engine so, dass ein Zertifikat von einer vertrauenswürdigen Autorität verwendet wird. Diese Option ist der sicherste langfristige Fix, da Clients das Zertifikat dann ohne zusätzliche Konfiguration überprüfen. Weitere Informationen finden Sie unter "Aktivieren von verschlüsselten Verbindungen mit den Datenbank-Engine- und Zertifikatanforderungen für SQL Server".

  • Wenn keine Verschlüsselung erforderlich ist:

    • Deaktivieren Sie die Verschlüsselung in Ihrer Clientanwendung. Legen Sie Encrypt=Optional für eine OLE DB-Anbieterzeichenfolge, Use Encryption for Data=Optional für OLE DB ADO oder IDataInitialize, Encrypt=no für ODBC und Encrypt=False für Microsoft.Data.SqlClient oder den Microsoft JDBC-Treiber fest. Legen Sie in SSMS 20 und höheren Versionen auf der Anmeldeseite des Dialogfelds "Mit Server verbinden" die Option "Verschlüsselungauf Optional" fest.

    • Deaktivieren Sie die serverseitige Verschlüsselung mithilfe von SQL Server-Konfigurations-Manager. Erweitern Sie SQL Server-Netzwerkkonfiguration, klicken Sie mit der rechten Maustaste auf Protokolle für <Instanzname>, wählen Sie Eigenschaften, wählen Sie die Registerkarte Flags, setzen Sie Verschlüsselung erzwingen auf Nein, und starten Sie dann den SQL Server-Dienst neu. Weitere Informationen finden Sie unter Protokolle für MSSQLSERVER-Eigenschaften (Registerkarte "Flags").

      Warning

      Wenn Sie die Verschlüsselung deaktivieren, werden Anmeldeinformationen und Daten ungeschützt über das Netzwerk übertragen. Deaktivieren Sie die Verschlüsselung nur für vertrauenswürdige, isolierte Netzwerke.