SSL会话票证与会话ID

Hov*_*yan 24 ssl

为了提高SSL握手性能而不保留(短)连接,有两个独立的功能已广为人知:

  • TLS会话ID
  • TLS会话门票

在很多短连接会话的情况下,哪种机制在性能开销方面是优选的并且应该使用?

我知道服务器需要缓存会话ID,会话票据在负载平衡的情况下也很容易共享,但我们假设有一个服务器在单个端口上监听(无负载平衡),并且它接收很多SHORT传入TLS连接会话.

那么在这种情况下,哪种方法(会话或门票)更可取?

Dha*_*yal 18

当服务器发送"服务器Hello"消息时,它可以包括会话标识符.客户端应该存储它并将其显示在下一个会话的"Client Hello"消息中.如果服务器在其缓存中找到相应的会话并接受恢复会话,它将发回相同的会话标识符并继续使用缩写的SSL握手.否则,它将发出新的会话标识符并切换到完全握手.这种机制在RFC 5246中有详细说明.它是最常见的机制,因为它存在于早期版本的SSL之后.

在完全SSL握手的最后一次交换中,服务器可以包括"新会话票证"消息(未在图中描述的握手中表示),其将包含完整的会话状态(包括客户端与客户端之间协商的主秘密).服务器和使用的密码套件).因此,该状态由仅由服务器知道的密钥加密和完整性保护.此不透明数据称为会话票证.详细信息在RFC 5077中,后者取代了RFC 4507.

票证机制是TLS扩展.客户端可以通过在"Client Hello"消息中发送空的"Session Ticket"扩展来通告其支持.如果服务器支持,服务器将在其"服务器Hello"消息中回答空的"Session Ticket"扩展.如果其中一个不支持此扩展,则它们可以回退到SSL内置的会话标识符机制.

RFC 5077确定了票据优于会话标识符的情况.主要的改进是避免维护服务器端会话缓存,因为客户端而不是服务器会记住整个会话状态.会话高速缓存在内存方面成本高,并且当跨服务器进行负载平衡请求时,难以在多个主机之间共享.

  • 这似乎主要是对会话和门票的反刍.要获得赏金,需要提供定性建议的特定答案. (2认同)
  • 该答案内容的可能来源以及供进一步阅读:https://vincent.bernat.im/zh/blog/2011-ssl-session-reuse-rfc5077 (2认同)

小智 12

使用session-id,服务器需要跟踪以前可以在某个时间点继续的会话.这导致服务器必须执行的一些额外工作.

相反,会话票证不是标识符,而是由服务器加密的会话数据(并且只有服务器可以对其进行解密).当客户端希望继续会话时,它仍然知道预主密钥,但服务器不再知道.因此,客户端将会话票证发送到服务器,只有服务器能够解密其内容.继续会话所需的任何信息都包含在那里,因此服务器可以在不保留任何信息的情况下恢复会话.所有额外的负载都在客户端完成(通过保留pre-master secret和session-ticket).


use*_*421 1

在这种情况下,您只需要会话 ID,它们内置于大多数 SSL 实现中,这与 RFC 5077 票务不同,后者仍然是 TLS 扩展。

  • 您能解释一下为什么我需要使用会话 ID 吗?我不关心它只是一个扩展,假设我控制服务器和客户端,所以我需要选择最有效的一个。我需要评估两者的性能,那么哪一个更快?为什么? (4认同)
  • 我没有说您*需要*使用会话IDS,我说您*仅*需要使用会话ID,因为您似乎不需要票证提供的额外设施。我看不出任何理由为什么两者应该更快。在我看来,你的问题更多的是可行性而不是性能。 (2认同)