几天前,我读了一篇关于 nginx 中的会话恢复的博客文章。
在该文中,作者声称 nginx 不提供定期清除会话缓存的功能。“ssl_session_timeout”过期后,会话不再使用,但文件仍在硬盘上,攻击者可以读取,因此“前向保密”此时将毫无用处。
他建议不要使用会话 ID,而是停用会话缓存并使用会话票证。为此,必须每天至少创建一次具有 80 字节随机性的“ticket_key”。
我在互联网上搜索更多信息,但没有找到任何有用的信息。
问题 1:nginx 会话缓存的位置是什么,如何检查 TLS 连接数据(会话)是否在硬盘上?
Q2:建议使用 Session Tickets 吗?
答案1
我无法回答第一个问题,但可以稍微谈一下第二个问题。
这篇博客文章提供了有关 TLSv1.2 会话票证缺陷的一些有用信息:https://blog.filippo.io/we-need-to-talk-about-session-tickets/。
因此,正如 Michael 所说,它们都有各自的问题,只有使用 TLSv1.3 时(刚刚签字因此(在撰写本文时才刚刚在实现中可用)您可以完全安全地使用 TLS 恢复。
然而,不使用 TLS 会话恢复的性能成本是巨大的,而在我看来风险相对较低(如果有人可以访问您的服务器,那么就我而言,游戏就结束了)。所以现在我建议同时使用会话 ID 和会话票证。特别是因为一些客户端(Windows 7 及更早版本上的 Safari 和 IE)不支持会话票证。特别是 Safari 在移动设备和平板电脑上仍然有很多用户 - 您真的想大大降低所有 iOS 用户的速度吗?