java - 集群中的 Tomcat TLS session 恢复

标签 java ssl tomcat openssl

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 call setTicketKeys() 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/

相关文章:

java - 有没有一种有效的方法来重构这个 Android SQLite 数据库处理程序?

python - Twisted Python,在从纯文本切换到安全连接时使用 ssl.CertificateOptions

java - 维护多个 webapps 的多个 log4j.xml 配置

python - 尽管有最新的依赖关系,但 Python 请求出现 SSL 错误

java - 蜂窝数据上的 FTP 显式失败

java - Spring boot 1.5.2 未部署在 Openshift Tomcat 7(JBoss EWS 2.0) 中

java - 如果我们将两个不同版本的 jar 文件放在类路径中会发生什么?

java - android java中 '^'(插入符号)的 key 代码?

java - 为什么我的 ButtonClickListerner 不工作?

java - 如何通过用户输入创建新的对象名称