632 Stimmen

"Die Zertifikatskette wurde von einer nicht vertrauenswürdigen Autorität ausgestellt" beim Verbinden mit der Datenbank im VM-Role von der Azure-Website.

Ich habe einen Fehler beim Verbinden mit meiner DB in der VM-Rolle (ich habe SQL VM-Rolle) von der Azure-Website. Beide VM-Rolle und Azure-Website sind in der West-Zone. Ich habe folgendes Problem:

SqlException (0x80131904): Es wurde eine Verbindung mit dem Server erfolgreich hergestellt, aber dann trat ein Fehler während des Anmeldevorgangs auf. (Anbieter: SSL-Anbieter, Fehler: 0 - Die Zertifikatkette wurde von einer nicht vertrauenswürdigen Behörde ausgestellt.)

Ich kann mich mit SSMS mit meiner DB verbinden. Der Port 1433 ist auf meiner VM-Rolle geöffnet. Was ist falsch mit meiner Verbindung?

1169voto

Thiago Silva Punkte 8097

2022 Update - Diese Antwort (wie in den Kommentaren erwähnt) bietet eine Erklärung und eine vorläufige Lösung, enthält jedoch auch einige bessere Empfehlungen, einschließlich des Kaufs und der Installation eines ordnungsgemäßen Zertifikats (dank zahlreicher Bearbeitungen durch die Community).

Bitte beachten Sie auch die anderen hoch bewerteten Antworten in diesem Thread, einschließlich der von @Alex From Jitbit unten über eine Änderung bei der Migration von System.Data.Sql zu Microsoft.Data.Sql (Spoiler: Encrypt ist jetzt standardmäßig auf true gesetzt).

Ursprüngliche Antwort:

Sie haben wahrscheinlich kein von einer CA signiertes Zertifikat im vertrauenswürdigen Stammzertifikatspeicher Ihres SQL-VM installiert.

Wenn Sie Encrypt=True in der Verbindungszeichenfolge haben, setzen Sie das entweder auf aus (nicht empfohlen) oder fügen Sie das folgende in die Verbindungszeichenfolge ein (ebenfalls nicht empfohlen):

TrustServerCertificate=True

SQL Server erstellt ein selbstsigniertes Zertifikat, wenn Sie keines installieren, aber es wird vom Aufrufer nicht vertraut, da es nicht von einer CA signiert ist, es sei denn, Sie teilen der Verbindungszeichenfolge mit, dass standardmäßig jedem Serverzertifikat vertraut werden soll.

Auf lange Sicht würde ich empfehlen, Let's Encrypt zu nutzen, um ein von einer bekannten vertrauenswürdigen CA signiertes Zertifikat kostenlos zu erhalten und es auf der VM zu installieren. Vergessen Sie nicht, es so einzurichten, dass es automatisch aktualisiert wird. Weitere Informationen zu diesem Thema finden Sie in der SQL Server-Dokumentation unter den Themen "Verschlüsselungshierarchie" und "Verwendung von Verschlüsselung ohne Validierung".

347voto

Alex from Jitbit Punkte 44084

Ich habe beschlossen, eine weitere Antwort hinzuzufügen, da dieser Beitrag als erstes Google-Ergebnis für diesen Fehler angezeigt wird.

Wenn Sie diesen Fehler nach Januar 2022 erhalten, möglicherweise nach der Migration von System.Data.SqlClient zu Microsoft.Data.SqlClient oder nach dem einfachen Aktualisieren von Microsoft.Data.SqlClient auf Version 4.0.0 oder später, liegt das daran, dass MS eine Änderung eingeführt hat:

https://learn.microsoft.com/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace?view=sql-server-ver15#breaking-changes-in-40

Änderungen von Version 4.0

Die Encrypt-Verbindungszeichenfolgeneigenschaft wurde standardmäßig auf true geändert.

Der Standardwert der Encrypt-Verbindungseinstellung wurde von false auf true geändert. Mit der zunehmenden Nutzung von Cloud-Datenbanken und der Notwendigkeit, sicherzustellen, dass diese Verbindungen sicher sind, ist es Zeit für diese rückwärtskompatibilitätsbrechende Änderung.

Stellen Sie sicher, dass Verbindungen fehlschlagen, wenn eine Verschlüsselung erforderlich ist

In Szenarien, in denen Client-Verschlüsselungsbibliotheken deaktiviert oder nicht verfügbar waren, war es möglich, dass unverschlüsselte Verbindungen hergestellt wurden, wenn Encrypt auf true gesetzt war oder der Server eine Verschlüsselung erforderte.

Die Änderung wurde in diesem SqlClient Pull-Request im August 2021 vorgenommen, wo es weitere Diskussionen über die Änderung gibt.

Der Schnellfix besteht darin, Encrypt=False zu Ihren Verbindungszeichenfolgen hinzuzufügen.

214voto

ct.tan Punkte 2355

Wenn Sie SQL Management Studio verwenden, gehen Sie bitte zu Verbindungseigenschaften und klicken Sie auf Wenn Sie SQL Management Studio verwenden, gehen Sie bitte zu Verbindungseigenschaften und klicken Sie auf "Trust server certificated"

85voto

vmanne Punkte 935

Wenn Sie diese Fehlermeldung beim Verbindungsversuch mit SSMS sehen, fügen Sie TrustServerCertificate=True zu den zusätzlichen Verbindungseinstellungen hinzu.

52voto

T.S. Punkte 15824

Ich habe diese Nachricht in Entity Framework-Migrationen erhalten. Ich konnte mich mit Win Auth mit dem Sql Server verbinden und manuell eine Tabelle erstellen. Aber EF hat nicht funktioniert. Dieser Verbindungszeichenfolge hat schließlich funktioniert

Server=MyServerName;Database=MyDbName;Trusted_Connection=SSPI;Encrypt=false;TrustServerCertificate=true

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X