我想知道当我在她的旗帜上设置三个不同的ServicePointManager.SecurityProtocol
时,属性SecurityProtocolType
如何工作。即:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
通信是否会先尝试与TLS
进行通信,如果失败,请尝试TLS1.2
和SSL3
之后?
如果没有,这些标志意味着什么,它是如何工作的?
答案 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/