2016-06-20 14 views
1

Ich würde gerne wissen, wie die Eigenschaft ServicePointManager.SecurityProtocol funktioniert, wenn ich drei verschiedene SecurityProtocolType auf ihre Fahnen gesetzt. I.E:Wie funktioniert das ServicePointManager.SecurityProtocol?

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3; 

Wird die Kommunikation zuerst versuchen, mit TLS zu kommunizieren, und wenn es TLS1.2 und nach SSL3 nicht versuchen?

Wenn nicht, was bedeuten diese Flags und wie funktioniert es?

Antwort

1

Welches Kommunikationsobjekt Sie auch verwenden (HttpClient, HttpWebRequest, usw.) versucht zuerst die höchstmögliche Stufe zu erreichen. Geschieht dies nicht, wird es "unten" in der Kette bleiben.

Wenn Sie mit .Net 4.6 dann die Standard-Sicherheitsprotokolle wie folgt aussehen, da SSL3 gebrochen:

SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 

Wenn Sie wirklich SSL3 aus irgendeinem Grund verwenden müssen und werden mit .NET 4.6, In diesem Artikel von MS KB finden Sie Informationen dazu, wie Sie die Anwendung unsicher machen können: https://support.microsoft.com/en-us/kb/3069494

Sie könnten auch fragen, wie diese Protokollstufe tatsächlich ermittelt wird? Dies ist Schritt 1 des SSL-Handshake-Prozesses, bei dem an jedem Ende der Verbindung "Ich unterstütze diese Version" steht. Hier ist eine interessante lesen auf den vollständigen Handshake-Prozess: http://www.truedigitalsecurity.com/blog/2015/05/20/ssltls-protocol-version-negotiation/

+0

Vielen Dank für die Antwort. Es war genau das, was ich suchte. –

+0

Ich habe noch einen Zweifel, wenn die Client-Seite nur TLS 1.0 und TLS 1.1 akzeptiert, aber der Server akzeptiert nur TLS 1.2, wird die Kommunikation mit Erfolg realisiert werden? Haben Sie 1.2 Server-Kompatibilität mit TLS 1.1 in Client? –

+1

Wenn der Server nur 1.2 und sonst nichts unterstützt, sollten Sie besser 1.2 in Ihrem ServicePointManager haben oder es wird nicht funktionieren. So etwas passierte, als SSLv3 veraltet war und einige Server nur noch SSLv3 unterstützten, jedoch ist .Net 4.6 standardmäßig nicht vorhanden, sodass die Kommunikation fehlschlug. Mit 1.0/1.1/1.2 ist eine sichere Wette für jetzt. Überprüfe dies einmal, wenn 1,0 kaputt ist. –