1

在 TLSv1.2 中,客户端能够使用 SSLSessionID 恢复。此 ID 在多个恢复的会话中保持不变。

在我修改过的 apache 网络服务器中,我有一个逻辑,可以根据 SSLSessionID 检查会话 cookie。如果 SSLSessionID 更改为相同的 cookie,我会放弃该请求。

现在我如何在 TLSv1.3 中实现这一点。(会话的恢复不是问题,这是可行的。)

问题是,每个请求的 SSLSessionID 都会发生变化,在恢复的会话中也是如此。

显然我的机制不再起作用,所以我需要一个在恢复的会话中保持不变的标识符。

4

1 回答 1

2

TL;DR:没有严格的等价物,因为该功能已被删除。但是为了类似的需求引入了新的会话票。

TLS 1.3 上的RFC 8446说:

2.2. 恢复和预共享密钥 (PSK)

[..]

在 TLS 1.2 及更低版本中,此功能由“会话 ID”和“会话票证”[RFC5077] 提供。这两种机制在 TLS 1.3 中都已过时。

第 4.1.2 节 aboutClientHello也描述了这个扩展:

legacy_session_id:

TLS 1.3 之前的 TLS 版本支持“会话恢复”功能,该功能已与此版本中的预共享密钥合并(参见第 2.2 节)。具有由 pre-TLS 1.3 服务器设置的缓存会话 ID 的客户端应该将此字段设置为该值。在兼容模式下(参见附录 D.4),该字段必须是非空的,因此不提供 TLS 1.3 之前会话的客户端必须生成一个新的 32 字节值。这个值不必是随机的,但应该是不可预测的,以避免实现固定在一个特定的值上(也称​​为 ossification)。否则,它必须设置为零长度向量(即,零值单字节长度字段)。

您能找到的最接近的是新的“会话票”,请参阅 §4.6.1

但是,如果您转到https://ssl-config.mozilla.org/ 之类的内容,您会看到所有配置都在禁用会话票证的情况下完成。

您可以查看https://timtaubert.de/blog/2017/02/the-future-of-session-resumption/了解 1.2 和 1.3 之间的变化

于 2020-02-13T22:38:14.503 回答