群集中的Tomcat TLS会话恢复

时间:2019-07-10 20:49:55

标签: java ssl tomcat openssl

TLS允许通过会话ID或会话票证恢复会话。 This post显示了如何在Apache Web服务器和Nginx中执行此操作。特别地,Apache有一个SSLSessionTicketKeyFile directive,它允许TLS会话票证通过特定的密钥而不是在启动时随机选择的密钥进行加密。这在群集中非常有用,在群集中,任何群集成员都可以通过共享密钥打开由另一个成员加密的票证。

我在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使用了此功能。

  

我的问题是:我需要一个OpenSSLSessionContext的实例才能调用setTicketKeys()。我应该如何获得这个实例?

编辑:如果可以通过配置完成操作,那就更好了!

1 个答案:

答案 0 :(得分:-1)

这实际上记录在Tomcat documentation中:主要收获是:

  • 这并非仅通过配置即可完成,因为您必须在上下文侦听器上显式设置标志(尽管您还需要配置连接器才能启用该功能!)
  • 当然还有关于代理和SSL终止的警告(例如,如果Tomcat终止SSL会话,则您将无法恢复到该会话)
  • 尚不支持APR连接器(还?),仅NIO(2)连接器