为了提高不保留(短)连接的 SSL 握手性能,有两个广为人知的独立功能:
如果有很多短连接会话,就性能开销而言,哪种机制更可取并且应该使用?
我知道服务器需要缓存会话 ID,并且在负载平衡的情况下会话票证也很容易共享,但我们假设有一个服务器在单个端口上侦听(无负载平衡),并且它接收很多短传入 TLS 连接会话。
那么在这种情况下哪种方法(会话或票证)更可取呢?
当服务器发送“Server Hello”消息时,它可以包含会话标识符。客户端应存储它并在下一个会话的“Client Hello”消息中呈现它。如果服务器在其缓存中找到相应的会话并接受恢复会话,它将发回相同的会话标识符,并继续进行简短的 SSL 握手。否则,它将发出新的会话标识符并切换到完整握手。 RFC 5246 中详细介绍了此机制。它是最常见的机制,因为它自早期版本的 SSL 起就存在。
在完整 SSL 握手的最后一次交换中,服务器可以包含一条“新会话票证”消息(未在图中描述的握手中表示),该消息将包含完整的会话状态(包括客户端和客户端之间协商的主密钥)服务器和使用的密码套件)。因此,该状态由只有服务器知道的密钥进行加密和完整性保护。这种不透明的数据称为会话票证。详细信息参见 RFC 5077,它取代了 RFC 4507。
票证机制是 TLS 扩展。客户端可以通过在“Client Hello”消息中发送空的“Session Ticket”扩展来宣传其支持。如果服务器支持,它将在其“Server Hello”消息中以空的“Session Ticket”扩展进行应答。如果其中之一不支持此扩展,则可以回退到 SSL 中内置的会话标识符机制。
RFC 5077 标识了需要票证而不是会话标识符的情况。主要改进是避免维护服务器端会话缓存的需要,因为整个会话状态是由客户端而不是服务器记住的。会话缓存在内存方面可能会很昂贵,并且当请求在服务器之间进行负载平衡时,可能很难在多个主机之间共享。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)