2016-07-12 6 views
0

Ich rufe einen Webdienst mit Zertifikaten und Sicherheitsprotokoll an. Die Anwendung lief gut, aber plötzlich fing ich an, eine Web-Ausnahme zu geben.Fehler SecureChannelFailure, SSL/TLS konnte nicht erstellt werden

Die Anfrage wurde abgebrochen: Sicherer SSL/TLS-Kanal konnte nicht erstellt werden.

wenn ich Statuscode überprüft, ist es SecureChannelFailure und HResult ist 2146233079. Die Webdienstantwort gibt NULL zurück.

Teil des Codes ist wie folgt:

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

ich jede Hilfe dankbar.

+0

-Code und Ausnahme-Format –

Antwort

0

ein paar Fragen, die Sie in die richtige Richtung

  • Vielleicht ist das Zertifikat, das Sie verwenden ist abgelaufen zeigen könnte?
  • Vielleicht führen Sie den Client von einem anderen Computer als zuvor aus, auf dem der vertrauenswürdige Stamm des Zertifikats nicht installiert ist?
  • Vielleicht wurde das Zertifikat irgendwie widerrufen?

Hoffe es hilft!

-1

Haben Sie eine Lösung dazu gefunden? Ich habe festgestellt, dass ein Windows-Update für meine Windows 10-Maschine und die Windows 2008RC-Server unser Problem verursacht haben. Das Problem, das wir haben, ist, dass wir die 3rd-Party-Server nicht schnell von SHA1-verschlüsselten Zertifikaten ändern können.

Ein Weg herum ist es, die hier aufgeführten Updates zu deinstallieren. https://blogs.windows.com/msedgedev/2016/04/29/sha1-deprecation-roadmap/

Ein anderer Weg, um es ist, diese Codezeile hinzuzufügen:

System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

Ref: Could not establish trust relationship for SSL/TLS secure channel -- SOAP

jedoch nicht für uns arbeiten diese nicht.

+0

Ich habe auch System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls; zu meinem Code für das Debugging nur, weil das Problem zu meinen Gewinnen 10 Updates war und der Server verschiedene Updates hatte. – Sniipe

0

Es funktionierte für mich, wenn ich Zert hinzugefügt ähnliche

X509Store certificatesStore = new X509Store(storeName, storeLocation); 
certificatesStore.Open(OpenFlags.OpenExistingOnly); 
var matchingCertificates = certificatesStore.Certificates.Find(X509FindType.FindBySerialNumber, serialNumber, true); 
request.ClientCertificates.Add(matchingCertificates); 
Verwandte Themen