gpt4 book ai didi

Spring Boot 2 tomcat ssl握手缓存

转载 作者:行者123 更新时间:2023-12-04 13:56:16 24 4
gpt4 key购买 nike

使用 nginx 可以像这样缓存 ssl 握手 (https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-tcp/):

ssl_session_cache     shared:SSL:20m;
ssl_session_timeout 4h;
是否可以在 SpringBoot 2 中使用 Tomcat 做同样的事情?
我问是因为在我们的性能测试中,我们看到如下错误(使用 Gatling):
 j.n.ConnectException: handshake timed out 
如果没有,还有其他选择可以帮助我吗?
谢谢

最佳答案

Java 的 JSSE 已经有 20480 个条目的默认 session 缓存,有效期为 24 小时。
如果要更改这些值:

  • 在全局级别上,您可以设置系统属性 javax.net.ssl.sessionCacheSize到所需的缓存大小(参见 customizing JSSE ),
  • 在外部 Tomcat 中,您可以使用属性 sessionCacheSizesessionTimeout <SSLHostConfig> 元素,
  • 当您使用嵌入式 Tomcat 服务器时,您可以定义一个 TomcatConnectorCustomizer ,例如

  • @Component
    public class SSLSessionCustomizer implements TomcatConnectorCustomizer {

    @Override
    public void customize(Connector connector) {
    for (final SSLHostConfig hostConfig : connector.findSslHostConfigs()) {
    hostConfig.setSessionCacheSize(40960);
    hostConfig.setSessionTimeout(2 * 24 * 60 * 60);
    }
    }
    }
    备注 : 你可以使用 openssl s_client -reconnect测试 session 恢复。然而,在最近的 Java 版本中,如果 TLS 扩展 extended_master_secret,JSSE 会中止 session 恢复。丢失(参见 release notes)。较旧的客户端(例如基于 OpenSSL 1.0 的客户端)不支持此扩展。如果兼容性对您很重要,您可以设置系统属性:
    jdk.tls.useExtendedMasterSecret=false

    关于Spring Boot 2 tomcat ssl握手缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61827105/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com