2017-03-23 6 views
0

Ich habe eine C# -Anwendung, die beim Versuch, eine Datei auf einem Remote-SharePoint-Server zu speichern, den Fehler "Die Anforderung wurde abgebrochen: Sicherer SSL/TLS-Kanal konnte nicht erstellt werden" generiert. Dies geschieht auf einem Windows 2012-Server, aber die Anwendung wird erfolgreich von meinem Desktop Windows-Computer ausgeführt.C# -Anwendung kann keine SSL/TLS-Verbindung herstellen

Außerdem kann ich vom Dev-Server eine Verbindung zum SharePoint-Server mit IE11 herstellen, wobei nur TLS 1.1 aktiviert ist.

Die Anwendung hat alle Sicherheitsprotokolle aktiviert.

Ich weiß auch, dass die Anwendung nie die certificatevalidationcallback-Funktion aufruft.

Angesichts dieser Symptome hat jemand eine Idee, was könnte schief gehen?

+0

Sie können versuchen, eine Verbindung zu Ihrem Server mit OpenSsl und aktivieren Sie ausführliche Protokollierung und sehen, ob das erfolgreich von Windows 2012 Server durchläuft. – Jinish

+0

Nach ziemlich viel Experimentieren fand ich die Lösung, aber ich bin immer noch verwirrt. Die Lösung war die Verwendung von System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11; was nicht überraschend ist. Was ist überraschend, dass, wenn ich den Fehler bekam, ich System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12; Ich dachte, es gäbe keinen Nachteil, beide Protokolle zuzulassen. –

Antwort

0

Nach ziemlich viel Experimentieren fand ich die Lösung, aber ich bin immer noch verwirrt. Die Lösung war die Verwendung von

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11;

was nicht überraschend ist. Was ist überraschend, dass, wenn ich den Fehler bekam, war ich mit

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;

Ich habe beide Protokolle angegeben, weil ich nicht sicher war, welches vom Remote-Server verwendet wurde, und ich dachte, es gäbe keinen Nachteil, wenn eines der beiden Protokolle erlaubt wäre.

Jetzt wundere ich mich, warum das Erlauben eines zweiten Protokolls die Anwendung verursacht, den sicheren Kanal nicht herzustellen.

+0

gibt es zwei Möglichkeiten, die ich mir vorstellen kann. Einer besteht darin, dass der Webserver sich schlecht benimmt und kein niedrigeres Protokoll aushandelt. Einige Server, die mit einer TLS-Version konfrontiert sind, die sie nicht verstehen, explodieren, anstatt einen niedrigeren zu wählen. Die zweite Möglichkeit ist, dass TLS 1.2 ausgehandelt wird, aber eine Verschlüsselungssuite für TLS 1.2 nicht ausgewählt werden konnte. Zum Beispiel könnte ein Client sagen "RC4 kann mit TLS 1.1 oder niedriger verwendet werden" und der Server unterstützt nur RC4. – vcsjones

+0

Ausgezeichnete Vorschläge: Danke. –

Verwandte Themen