TLS 允许通过 session ID 或 session 票证恢复 session 。 This post显示了如何在 Apache Web 服务器和 Nginx 中执行此操作。特别地,Apache 有一个 SSLSessionTicketKeyFile
directive这允许 TLS session 票证由特定 key 加密,而不是在启动时随机选择的 key 。这在集群中很有用,其中任何集群成员都可以打开由另一个成员通过共享 key 加密的票证。
我在 Tomcat TLS documentation 中找不到类似的功能.但是,我找到了一个名为 setTicketKeys
的方法。这似乎正是我想要的:
public void setTicketKeys(byte[] keys)
Sets the SSL session ticket keys of this context.
Parameters:
keys - The session ticket keys
我还找到了a class from Facebook Nifty它使用了这个函数。
My question is: I need an instance of
OpenSSLSessionContext
to callsetTicketKeys()
on. How should I get this instance?
编辑:如果这可以通过配置来完成,那就更好了!
最佳答案
这实际上记录在 Tomcat documentation 中:主要要点是:
- 它不能仅通过配置来实现,因为您必须在上下文监听器上明确设置标志(尽管您也需要配置连接器才能启用该功能!)
- 当然有代理和 SSL 终止的注意事项(例如,如果 Tomcat 终止 SSL session ,您将无法恢复)
- 不支持 APR 连接器(还?),仅支持 NIO(2) 连接器
关于java - 集群中的 Tomcat TLS session 恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56978449/