Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
- Um die Zertifikatüberprüfung beizubehalten und das Vertrauensproblem dauerhaft zu beheben, verwenden Sie Option 1: Installieren Sie die Zertifizierungsstelle auf dem Clientcomputer.
- Um sofort eine Verbindung herzustellen, ohne ein Zertifikat zu installieren, verwenden Sie Option 2: Vertrauen Sie dem Serverzertifikat, ohne es zu überprüfen. Diese Option ist die schnellste Lösung, und es ist die Option, die die meisten Benutzer benötigen, wenn SQL Server sein selbstsigniertes Standardzertifikat verwendet.
- Um die Verschlüsselung zu beenden oder das Zertifikat durch eine von einer vertrauenswürdigen Autorität zu ersetzen, verwenden Sie Option 3: Ändern der Verschlüsselungskonfiguration.
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.
Wählen Sie "Start" aus, geben Sie "mmc" ein, und öffnen Sie dann Microsoft Management Console.
Wählen Sie Datei>Snap-Ins hinzufügen/entfernen aus.
Wählen Sie in der Liste Verfügbare Snap-InsZertifikate und dann Hinzufügen aus.
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.
Wählen Sie "OK " aus, um das Dialogfeld "Snap-Ins hinzufügen" oder "Entfernen " zu schließen.
Erweitern Sie im linken Bereich Zertifikate (lokaler Computer), erweitern Sie "Persönlich", und wählen Sie dann "Zertifikate" aus.
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 .
Wählen Sie "Weiter" aus, um über die Willkommensseite des Zertifikatexport-Assistenten zu navigieren.
Bestätigen Sie, dass Nein, der private Schlüssel nicht exportiert wird, und wählen Sie dann "Weiter" aus.
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.
Geben Sie einen Exportdateinamen ein, z. B. caCert.cer.
Wählen Sie "Weiter" und dann " Fertig stellen " aus, um das Zertifikat zu exportieren.
Kopieren Sie die exportierte .cer Datei auf den Clientcomputer.
Schritt 2: Installieren Sie das Stammzertifizierungsstellenzertifikat (CA) auf dem Clientcomputer
Ö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.
Wählen Sie im Dialogfeld Zertifikat-Snap-In " Computerkonto" und dann "Weiter" aus.
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.
Wählen Sie "OK " aus, um das Dialogfeld "Snap-Ins hinzufügen" oder "Entfernen " zu schließen.
Erweitern Sie im linken Bereich von MMC den Knoten „Zertifikate (Lokaler Computer)“.
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.
Wählen Sie im Zertifikatimport-Assistenten auf der Willkommensseite"Weiter" aus.
Wählen Sie auf der Seite "Zu importierende Datei" die Option "Durchsuchen" aus.
Navigieren Sie zum Speicherort der caCert.cer Zertifikatdatei, wählen Sie die Datei aus, und wählen Sie dann "Öffnen" aus.
Wählen Sie auf der Seite "Datei zum Importieren" die Option "Weiter" aus.
Auf der Seite „Zertifikatspeicher“ übernehmen Sie die Standardauswahl, und wählen Sie dann „Weiter“ aus.
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:
- Verschlüsselung und Zertifikatsvalidierung bei Microsoft. Data.SqlClient
- Verschlüsselungs- und Zertifikatüberprüfung im OLE DB-Treiber für SQL Server
- Schlüsselwörter und Attribute für DSN und Verbindungszeichenfolgen für den ODBC-Treiber für SQL Server
- Herstellen einer verschlüsselten Verbindung mit dem Microsoft JDBC-Treiber für SQL Server
- Verschlüsselung ohne Überprüfung im SQL Server Native Client verwenden (Legacyclient)
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=Optionalfür eine OLE DB-Anbieterzeichenfolge,Use Encryption for Data=Optionalfür OLE DB ADO oderIDataInitialize,Encrypt=nofür ODBC undEncrypt=FalsefürMicrosoft.Data.SqlClientoder 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.
Verwandte Inhalte
- Zertifikatüberprüfungsfehler
- Problembehandlung bei SSL-Fehlern (Secure Sockets Layer), die während des Anmeldevorgangs auftreten
- Übersicht über die Zertifikatverwaltung für SQL Server
- Sonderfälle zum Verschlüsseln von Verbindungen mit SQL Server
- Verschlüsseln von Verbindungen zu SQL Server unter Linux