Während einer Webdienstanforderung an einen Remote-Webdienst wird folgende Fehlermeldung angezeigt:
Vertrauensbeziehung für den sicheren SSL / TLS-Kanal konnte nicht hergestellt werden. ---> System.Security.Authentication.AuthenticationException: Das Remote-Zertifikat ist gemäß dem Validierungsverfahren ungültig.
Gibt es eine Möglichkeit, diesen Fehler zu ignorieren und fortzufahren?
Es scheint, dass das Remote-Zertifikat nicht signiert ist.
Die Site, zu der ich eine Verbindung herstelle, ist www.czebox.cz
- besuchen Sie die Site und beachten Sie, dass selbst Browser Sicherheitsausnahmen auslösen.
Das Zulassen aller Zertifikate ist sehr leistungsfähig, kann aber auch gefährlich sein. Wenn Sie nur gültige Zertifikate und einige bestimmte Zertifikate zulassen möchten, können Sie dies folgendermaßen tun.
.Net-Kern:
.Net Framework:
Aktualisieren:
So erhalten Sie
cert.GetCertHashString()
Wert in Chrome:Klicken Sie auf
Secure
oderNot Secure
in der Adressleiste.Klicken Sie dann auf Zertifikat -> Details -> Fingerabdruck und kopieren Sie den Wert. Denken Sie daran
cert.GetCertHashString().ToLower()
.quelle
Hash String
von einem Zertifikat bekommen?cert.GetCertHashString()
ausImmediate window
oder überprüfen Sie das ZertifikatThumbprint
in Ihrem Browser oderMMC
ob es lokal installiert ist.IgnoreBadCertificates-Methode:
quelle
Der Grund dafür ist, dass es nicht signiert ist, sondern dass Ihr Client dem Stammzertifikat nicht vertraut. Anstatt die SSL-Validierung zu deaktivieren, besteht ein alternativer Ansatz darin, das Stammzertifizierungsstellenzertifikat zur Liste der Zertifizierungsstellen hinzuzufügen, denen Ihre App vertraut.
Dies ist das Stammzertifizierungsstellenzertifikat, dem Ihre App derzeit nicht vertraut:
Sie können dieses Zertifikat mit dekodieren und anzeigen
dieser Zertifikatsdecoder oder ein anderer Zertifikatsdecoder
quelle
So deaktivieren Sie die SSL-Zertifikatsüberprüfung in der Clientkonfiguration
quelle
Dieser Code hat bei mir funktioniert. Ich musste TLS2 hinzufügen, da die URL, an der ich interessiert bin, verwendet wurde.
quelle
SSL-Zertifikat umgehen ....
quelle
Wenn Sie Sockets direkt verwenden und sich als Client authentifizieren, funktioniert die Service Point Manager-Rückrufmethode nicht. Folgendes hat bei mir funktioniert. BITTE NUR FÜR PRÜFZWECKE VERWENDEN .
Der Schlüssel hierbei ist, den Rückruf für die Remote-Zertifikatvalidierung direkt im Konstruktor des SSL-Streams bereitzustellen.
quelle
Um den Beitrag von BIGNUM weiter auszubauen - Idealerweise möchten Sie eine Lösung, die die Bedingungen simuliert, die Sie in der Produktion sehen, und das Ändern Ihres Codes funktioniert nicht und kann gefährlich sein, wenn Sie vergessen, den Code vor der Bereitstellung herauszunehmen.
Sie benötigen ein selbstsigniertes Zertifikat. Wenn Sie wissen, was Sie tun, können Sie die Binärdatei BIGNUM verwenden, aber wenn nicht, können Sie nach dem Zertifikat suchen. Wenn Sie IIS Express verwenden, haben Sie bereits eines davon, Sie müssen es nur finden. Öffnen Sie Firefox oder einen beliebigen Browser und rufen Sie Ihre Entwickler-Website auf. Sie sollten in der Lage sein, die Zertifikatinformationen in der URL-Leiste anzuzeigen und abhängig von Ihrem Browser das Zertifikat in eine Datei exportieren zu können.
Öffnen Sie als Nächstes MMC.exe und fügen Sie das Zertifikat-Snap-In hinzu. Importieren Sie Ihre Zertifikatdatei in den Speicher für vertrauenswürdige Stammzertifizierungsstellen, und das ist alles, was Sie benötigen sollten. Es ist wichtig sicherzustellen, dass es in dieses Geschäft geht und nicht in ein anderes Geschäft wie "Personal". Wenn Sie mit MMC oder Zertifikaten nicht vertraut sind, gibt es zahlreiche Websites mit Informationen dazu.
Jetzt vertraut Ihr Computer als Ganzes implizit allen Zertifikaten, die er selbst generiert hat, und Sie müssen keinen Code hinzufügen, um dies speziell zu handhaben. Wenn Sie zur Produktion wechseln, funktioniert es weiter, vorausgesetzt, Sie haben dort ein ordnungsgemäßes gültiges Zertifikat installiert. Tun Sie dies nicht auf einem Produktionsserver - das wäre schlecht und funktioniert nicht für andere Clients als die auf dem Server selbst.
quelle
Dies funktioniert für .Net Core. Rufen Sie Ihren Soap-Client an:
quelle