服务器如何记住 TLS 握手中协商的密码套件?

服务器如何记住 TLS 握手中协商的密码套件?

我在任何地方都找不到这个问题的满意答案。希望在这里能得到一些喘息!

客户端和服务器进行握手,决定使用哪个密码套件,比如 X。

现在,下次客户端发送请求(常规)时,它将被加密然后发送。

考虑一下图表:-

请求响应Request response

这里,在 Transaction1 中协商密码套件?请求在 Transaction2 中发送。由于 http 是无状态协议,Transaction2 不会知道 Transaction1,那么它如何知道协商的内容?是使用会话还是此信息随每个请求一起发送?无论哪种情况,都必须解密请求以找出 sessionid 或密码套件。所以我认为无论如何都无法完成。

答案1

使用 TLS 会话缓存时,会话 ID 由客户端提供很清楚,作为ClientHello,作为启动 TLS 握手的消息不是需要找出 TLS 会话 ID。)然后,服务器可以检查其缓存中的该会话 ID,并找到为该会话 ID 缓存的先前协商的 SSL 会话信息,其中将包括(除其他内容外)协商的密码套件。

另一方面,如果使用 TLS 会话票证,则 TLS 会话信息(包括密码套件)加密由服务器发送,并由客户端缓存(类似于 cookie)。当客户端下次与该服务器执行 TLS 握手时,它将发送此加密的“会话票证”;服务器解密票证,并获得(除其他外)协商的密码套件。

希望这可以帮助!

相关内容