使用多个ServicePointManager.SecurityProtocol,首先尝试什么?

时间:2016-05-18 18:58:33

标签: c# .net https

在.NET 4.5中,如果我将ServicePointManager.SecurityProtocol设置为多个协议,并且服务器接受所有这些协议,那么将使用哪个协议来发出请求?

它是从最高协议开始并以故障恢复还是从最简单的协议开始并向前失败?

SELECT USR_ID 'USR_S_ID', USR_PW 'USR_S_PWD'
BULK COLLECT INTO USR_SUPER
FROM USR_INFO
WHERE USR_TYPE="S";

2 个答案:

答案 0 :(得分:1)

我没有过多考虑过这个问题,但文章here提到.Net 4.6将首先尝试使用最安全的行为。从事物的外观来看,这很可能会让它变得不幸。

答案 1 :(得分:0)

我相信其中很多是在TLS RFC s中规定和概述的。

要连接到使用SSL / TLS保护的服务器,需要交换“ Hello”数据包,在该数据包中,浏览器将提供它可以使用的所有TLS协议版本,以及它可以利用的所有密码套件和其他TLS扩展。然后,服务器选择将使用这些协议,密码和扩展名中的哪一个,并告知客户端。

当客户端和服务器就协议和密码进行对话时,将按优先顺序列出它们。偏好从最安全到最不安全。我无法在RFC中找到服务器是否需要选择来选择它所支持的最安全的协议,但这是一个普遍接受的规范。

这可能有帮助:

https://security.stackexchange.com/questions/168390/how-is-the-tls-version-selected-between-client-and-server