服务器如何确定使用哪个版本的 TLS?

服务器如何确定使用哪个版本的 TLS?

我知道现在客户端和服务器之间存在协商...但是什么决定了服务器选择响应 https 请求时使用的 TLS 版本?例如,它如何将连接限制为最低版本的 TLS?此外,服务器使用的安全证书与服务器使用的 TLS 版本之间是否存在关系?我读了一些 AWS 文档,似乎暗示了这一点。

我是新手;如果提问的方式不对,请见谅。我不介意提供一个链接供大家阅读,作为答案。

答案1

但是,什么决定了服务器如何选择响应 https 请求时将使用的 TLS 版本?

在 TLS 握手中,客户端向服务器宣布它可以执行的最佳版本。如果服务器支持的协议版本等于或低于客户端版本,它将回复其中的最佳版本。如果服务器不支持其中任何一个,则握手将失败。如果服务器回复的版本不受客户端支持,则握手也将失败。

另外,服务器使用的安全证书和服务器使用的 TLS 版本之间有关系吗?

TLS 协议版本与所用证书之间几乎没有关系。早已过时的 SSLv3 与协议的 TLS 1.x 版本之间存在细微差别,因为只有 TLS 1.x 支持扩展。一个重要的扩展是server_nameSNI——服务器名称指示),客户端指定其想要访问的域。如果同一 IP 地址上有多个证书,服务器可以选择合适的证书。

答案2

我不是 TLS 协议握手协商专家,所以这里是一个“粗略”的答案(专家,如果我错了请纠正我)* 我在这里只谈论 TLS 版本。不是密码。

场景 1:您的客户端将尝试其所能支持的最高版本的 TLS。假设您的客户端支持 1.1(旧)和 1.2。那么,服务器将使用尽可能最高的版本与您连接。希望是 1.2。

场景 2:您的客户端支持 1.2 或更高版本,而您的服务器是一台旧的、未更新的机器,只知道 1.1 版本。

情形 3:与情形 2 相同,但情况相反。连接也不起作用。

您的客户端将无法协商连接。它将就此停止。

场景 4:您的客户端和服务器都支持版本 1.1 和 1.2,但是假设服务器管理员配置(假设为 Apache HTTPD)强制仅使用 1.2 进行连接,那么您的客户端将使用 1.2。

此外,还有 TLS 1.3....但那将是相同的思维方式。(想法)

相关内容