2016-06-20 1 views
1

彼女のフラグに3種類の異なるSecurityProtocolTypeを設定すると、ServicePointManager.SecurityProtocolというプロパティがどのように動作するのか知りたいです。すなわち:ServicePointManager.SecurityProtocolはどのように機能しますか?

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

通信がTLSと通信する最初のを試してみて、それが失敗した場合TLS1.2を試してみて、SSL3後のでしょうか?

これらのフラグは何を意味し、どのように機能しますか?

答えて

1

使用している通信オブジェクト(HttpClient、HttpWebRequestなど)は、可能な限り最初に最高レベルにネゴシエートしようとします。それがチェーンを "ダウン"し続けることに失敗する。

あなたは純4.6を使用している場合SSL3が壊れているので、デフォルトのセキュリティプロトコルは、次のようになります。

SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 

あなたが実際にいくつかの理由でSSL3を使用する必要があると.NET 4.6を使用している場合は、 https://support.microsoft.com/en-us/kb/3069494

このプロトコルレベルが実際にどのように決定されているかを尋ねているかもしれませんか?これは、SSLハンドシェイクプロセスのステップ1で、接続の各端に「このバージョンをサポートしています」と表示されます。ここでは、完全なハンドシェイクプロセスに関する興味深い記事があります。http://www.truedigitalsecurity.com/blog/2015/05/20/ssltls-protocol-version-negotiation/

+0

回答ありがとうございます。まさに私が探していたものでした。 –

+0

クライアントサイドがTLS 1.0とTLS 1.1だけを受け入れても、サーバがTLS 1.2だけを受け入れるならば、もう一つの疑問があります。通信は成功して実現されますか?クライアントのtls 1.1とのサーバ互換性は1.2となっていますか? –

+1

サーバが1.2しかサポートしていない場合は、ServicePointManagerに1.2を入れたほうがよいか、動作しません。 SSLv3が廃止され、一部のサーバでSSLv3しかサポートされていないにもかかわらず、このような問題が発生しました.Net 4.6はデフォルトでは通信が切断されました。 1.0/1.1/1.2を持つことは今のところ安全な賭けです。一度1.0が壊れたらこれを再訪してください。 –

関連する問題