对于 websocket 服务器,使用 SSL 会话缓存是一个坏主意吗?

Posted

技术标签:

【中文标题】对于 websocket 服务器,使用 SSL 会话缓存是一个坏主意吗?【英文标题】:Is using SSL session cache a bad idea for a websocket server? 【发布时间】:2013-05-31 08:09:21 【问题描述】:

当客户端重新连接到 SSL 服务器时,SSL 会话缓存消除了重新计算该客户端先前使用的相同加密协议的需要(同时还将所需的通信往返次数从 2 次减少到 1 次)。

然而,websocket 协议规定客户端不应在没有充分理由的情况下从 websocket 服务器断开连接(例如,因为发生错误或用户关闭了浏览器/应用程序选项卡/窗口)(?);所以当 websockets 建立在 SSL 层之上时,服务器可以简单地假设任何 websocket 连接是活动的,除非另有通知,在此期间任何连接的底层 SSL 会话也可以安全地假设保持有效?

此外,websocket 服务器需要能够处理许多并发的长寿命连接,并且因为需要为每个单独的连接存储 SSL 会话缓存(?),在这种情况下实现这些缓存可能会损害性能,因为大内存开销,对吧?

对不起;这可能不仅仅是一个简单的问题,但我想验证我对这些问题的理解是否足够。

【问题讨论】:

只有一个 SSL 会话缓存。 SSL 会话存储在每个会话的缓存中,而不是每个连接。来自同一个客户端的多个同时连接使用同一个会话。 【参考方案1】:

嗯,

我认为这可能取决于软件架构。假设您有一个有 100 个页面的站点,并且用户经常在它们之间导航。他们中的许多人都有一个用于某些特殊目的的 websocket,但它只在显示该页面期间保持活动状态。然后,当您经常关闭/打开 WebSockets 时,缓存将是有意义的。

另一方面,您可能有一个只有一个页面的站点,并且您在其中打开了一个 websocket。内容由 WebSocket 和 Ajax 请求管理,但 WebSocket 在整个会话期间保持活动状态。在这种情况下,为 WebSocket 缓存 SSL 没有多大意义。

所以,最后,我会说这取决于实施。如果您已经有一个站点,您应该分析它的行为并调整您的缓存需求。另一方面,如果您开始设计一个新网站,了解不同场景的优缺点可能会帮助您构建更好、更高效的设计。

问候

【讨论】:

谢谢。我想到了你第二段的场景,但在我的问题中没有提到这一点。好点子。

以上是关于对于 websocket 服务器,使用 SSL 会话缓存是一个坏主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

java http可以websocket不行

使用正确的 SSL 证书连接不安全(Websockets)

如何使用 TLS/SSL 确保 WebSocket 连接的安全

如何使用 TLS/SSL 确保 WebSocket 连接的安全

WebSocket 服务器仅使用 ssl 从握手标头接收“G”

使用 ClientWebSocket 实现与 Websocket 服务器的安全 (SSL) 连接