Fehler "Die Zertifikatkette wurde von einer Autorität ausgestellt, die nicht vertrauenswürdig ist" nach dem Upgrade von SNAC-Anwendungen

Zusammenfassung

Dieser Artikel hilft Ihnen bei der Behandlung von Zertifikatkettenvertrauensfehlern, die auftreten, wenn Sie Datenbankanwendungen von SQL Server Native Client 11.0 (SNAC) auf Microsoft OLE DB Driver 19 oder Microsoft ODBC Driver 18 für SQL Server aktualisieren.

Wenn Sie ein Upgrade von SNAC 11.0 auf neuere Treiber durchführen, können Ihre Anwendungen möglicherweise keine Verbindung mit SQL Server herstellen, wenn Zertifikatkettenvertrauensfehler auftreten. Dieses Problem tritt auf, da die neueren Treiber die Verschlüsselung standardmäßig aktivieren und eine Zertifikatüberprüfung erfordern, während SNAC sie standardmäßig deaktiviert hat. Um den Fehler zu beheben, stellen Sie ein Zertifikat bereit, dem der Client vertraut, oder passen Sie die Verbindungseinstellungen für Encrypt, Use Encryption for Data oder TrustServerCertificate wie in diesem Artikel beschrieben an.

Welches Verschlüsselungsstichwort für Ihren Treiber und Client gilt

Das Schlüsselwort, das die Verschlüsselung steuert, hängt vom Treiber und davon ab, wie Ihre Anwendung ihre Verbindungszeichenfolge erstellt. Wenn Sie ein Schlüsselwort verwenden, das der Treiber nicht erkennt, schlägt die Verbindung mit einem Fehler "Schlüsselwort nicht unterstützt" statt mit dem Zertifikatfehler fehl.

Treiber- und Verbindungsmethode Verschlüsselungsschlüsselwort Schlüsselwort für Zertifikatvertrauen
OLE DB-Treiber 19, Anbieterzeichenfolge (IDBInitialize::Initialize) Encrypt TrustServerCertificate=yes oder no
OLE DB-Treiber 19, ADO oder Initialisierungszeichenfolge (IDataInitialize) Use Encryption for Data Trust Server Certificate=true oder false
ODBC-Treiber 18, Verbindungszeichenfolge oder DSN Encrypt TrustServerCertificate=yes oder no
  • OLE DB-Treiber 19: Akzeptiert Optional, Mandatory (Standard) und Strict. Aus Gründen der Abwärtskompatibilität akzeptiert sie auch die Werte von Version 18, wobei no und falseOptional zugeordnet werden und Mandatory und yestrue zugeordnet werden.
  • ODBC-Treiber 18: Akzeptiert yes/mandatory (Standardeinstellung) no/optionalund .strict
  • Anbieterzeichenfolgen: Verwenden TrustServerCertificate=yes oder TrustServerCertificate=no.
  • ADO- und Initialisierungszeichenfolgen: Verwenden Trust Server Certificate=true oder Trust Server Certificate=false.
  • Strenger Modus: Überprüft immer das Serverzertifikat und ignoriert die Einstellung für die Zertifikatvertrauensstellung.

Die Verwendung von TrustServerCertificate=true in einer Providerzeichenfolge kann den Fehler „Ungültiger Wert“ zurückgeben.

Die vollständigen Schlüsselwortlisten finden Sie unter Verwenden von Verbindungszeichenfolge Schlüsselwörtern mit OLE DB-Treiber für SQL Server, Hauptversionsunterschieden in MSOLEDBSQL und DSN und Verbindungszeichenfolge Schlüsselwörtern und Attributen.

Zertifikatkettenfehler, Ursache und Lösungen für OLE DB-Treiber 19 und ODBC-Treiber 18

Wählen Sie die Registerkarte für den Treiber aus, auf den Sie ein Upgrade ausgeführt haben. Auf jeder Registerkarte wird die angezeigte Fehlermeldung angezeigt, warum sie auftritt, und die Lösungen in der empfohlenen Reihenfolge.

Nach dem Upgrade von SQL Server Native Client 11.0 (Provider=SQLNCLI11) auf Microsoft OLE DB Driver 19 für SQL Server können Verbindungsversuche mit der folgenden Fehlermeldung fehlschlagen:

[Microsoft OLE DB-Treiber 19 für SQL Server]: Client kann keine Verbindung herstellen

[Microsoft OLE DB-Treiber 19 für SQL Server]: SSL-Anbieter: Die Zertifikatkette wurde von einer Autorität ausgestellt, die nicht vertrauenswürdig ist.

Ursache des Zertifikatkettenvertrauensfehlers beim Upgrade auf Microsoft OLE DB Driver 19

Dieser Fehler weist darauf hin, dass der Clientcomputer die Echtheit des SQL Server-Zertifikats nicht überprüfen kann, da es von einer Zertifizierungsstelle (Ca) ausgestellt wurde, der der Client nicht vertraut.

Diese Fehler treten auf, wenn beide der folgenden Bedingungen erfüllt sind:

  • Die Einstellung "Verschlüsselung erzwingen" für die SQL Server-Instanz ist auf "Nein" festgelegt.

  • Die Clientverbindungszeichenfolge gibt keinen Wert für die Verschlüsselungseigenschaft an, oder die Verschlüsselungsoption wurde im DSN nicht explizit festgelegt oder aktualisiert.

Der Fehler tritt aufgrund einer Änderung des Standardverhaltens der Clienttreiber auf. Ältere Versionen von Clienttreibern gehen davon aus, dass die Datenverschlüsselung standardmäßig DEAKTIVIERT ist. Bei den neuen Treibern wird davon ausgegangen, dass diese Einstellung standardmäßig aktiviert ist. Da die Datenverschlüsselung aktiviert ist, versucht der Treiber, das Zertifikat des Servers zu überprüfen und schlägt fehl.

Lösungen für Zertifikatkettenvertrauensfehler beim Upgrade auf Microsoft OLE DB Driver 19

Stellen Sie ein TLS-Zertifikat für die SQL Server Instanz von einer Zertifizierungsstelle bereit, der der Client vertraut. Stellen Sie sicher, dass der Server alle erforderlichen Zwischenzertifikate bereitstellt, damit der Client die Kette mit einer vertrauenswürdigen Stammzertifizierungsstelle erstellen kann. Bei diesem Ansatz wird der Fehler behoben, während die Verschlüsselung und die Zertifikatüberprüfung aktiviert bleiben. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.

Vertrauen Sie dem Serverzertifikat ohne Überprüfung

Wenn Sie ein überprüfbares Zertifikat nicht sofort bereitstellen können, bitten Sie den Treiber, die Zertifikatüberprüfung zu überspringen. Das verwendete Schlüsselwort hängt davon ab, wie Ihre Anwendung die Verbindungszeichenfolge erstellt:

  • Fügen Sie TrustServerCertificate=yes zu einer Anbieterzeichenfolge hinzu.
  • Fügen Sie Trust Server Certificate=truein einer ADO- oder Initialisierungszeichenfolge hinzu.

Diese Einstellung aktiviert die Verschlüsselung nicht selbst. Er weist dem Treiber an, die Zertifikatüberprüfung zu überspringen, wenn die Verbindung verschlüsselt ist, wodurch die Verbindung anfällig für Angreifer-in-the-Middle-Angriffe bleibt. Verwenden Sie sie nur als temporäre Maßnahme. Im Strict Verschlüsselungsmodus ignoriert der Treiber diese Einstellung und überprüft immer das Zertifikat.

Notiz

Derzeit verhindert MSOLEDBSQL19 die Erstellung von Verbindungsservern ohne Verschlüsselung und vertrauenswürdiges Zertifikat (ein selbstsigniertes Zertifikat reicht nicht aus). Wenn Sie verknüpfte Server benötigen, verwenden Sie die vorhandene unterstützte Version von MSOLEDBSQL.

Festlegen des Verschlüsselungsschlüsselworts auf Optional

Ändern Sie die Verschlüsselungseinstellung, damit der Treiber kein validiertes Zertifikat erfordert. Das verwendete Schlüsselwort hängt davon ab, wie Ihre Anwendung die Verbindungszeichenfolge erstellt:

  • Legen Sie in einer Providerzeichenfolge Encrypt=Optional fest.
  • Legen Sie Use Encryption for Data=Optional in einer ADO- oder Initialisierungszeichenfolge fest.

Der Standardwert in OLE DB Driver 19 lautet Mandatory. Wenn die Verbindungszeichenfolge den Wert bereits angibtMandatory, yesoder trueändern Sie den Wert in Optional. Wenn der Verbindungszeichenfolge keinen Wert angibt, fügen Sie das Schlüsselwort hinzu. Diese Änderung stellt das Verschlüsselungsverhalten der Version 18 wieder her und verringert die Sicherheit der Verbindung.

Weitere Informationen finden Sie unter Verschlüsselungs- und Zertifikatüberprüfung in OLE DB.

Verwenden Sie OLE DB Driver 18.x als vorübergehende Maßnahme.

Microsoft OLE DB-Treiber für SQL Server 18.x aktiviert standardmäßig keine Verschlüsselung, sodass sie von dieser Änderung nicht betroffen ist. Behandeln Sie diese Option als temporär, und planen Sie ihren Wechsel zu OLE DB Driver 19. Sie können den Treiber aus den Versionshinweisen für die Microsoft OLE DB-Treiber für SQL Server herunterladen.