ServicePointManager.SecurityProtocol如何工作?

时间:2016-06-20 14:23:58

标签: c#

我想知道当我在她的旗帜上设置三个不同的ServicePointManager.SecurityProtocol时,属性SecurityProtocolType如何工作。即:

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

通信是否会先尝试与TLS进行通信,如果失败,请尝试TLS1.2SSL3之后?

如果没有,这些标志意味着什么,它是如何工作的?

1 个答案:

答案 0 :(得分:3)

您正在使用的任何通信对象(HttpClient,HttpWebRequest等)将首先尝试协商到最高级别。如果没有继续下去" down"链条。

如果您正在使用.Net 4.6,则默认安全协议将如下所示,因为SSL3已损坏:

SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12

如果您确实需要使用SSL3并使用.Net 4.6,请参阅此MS KB文章,了解如何强制它不安全:https://support.microsoft.com/en-us/kb/3069494

你可能也会问这个协议级别是如何确定的?这是SSL握手过程的第1步,其中连接的每一端都表示"我支持此版本"。以下是关于完整握手过程的有趣读物:http://www.truedigitalsecurity.com/blog/2015/05/20/ssltls-protocol-version-negotiation/