java - 如何使用 JSSE 实现在 tomcat 8.5.5 中启用 TLSv1.3

标签 java ssl tomcat tls1.2

我们正在 Tomcat 服务器 8.5.5 上运行一个 Spring Boot 应用程序。我们为其配置了安全证书和 SSL 以支持 https。目前使用的是 TLSv1.2。我们的支付网关提供商计划停止对 TLSv1.2 的支持,并继续仅支持 TLSv1.3。
因此,我们想为我们的应用服务器添加 TLSv1.3 支持。下面是带有 TLSv1.3 所需密码的连接器 block 。

<Connector port="443" maxThreads="150" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/ubuntu/ourkey.p9" 
               keystorePass="ourpass" clientAuth="false" keystoreType="keystore" 
               sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1.2+TLSv1.3" protocol="org.apache.coyote.http11.Http11NioProtocol" server="Web"
                 useServerCipherSuitesOrder="true"           
                  ciphers="TLS_AES_256_GCM_SHA384,
    TLS_CHACHA20_POLY1305_SHA256,
    TLS_AES_128_GCM_SHA256,
    TLS_AES_128_CCM_8_SHA256,
    TLS_AES_128_CCM_SHA256,
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,... other ciphers/>

我们正在使用 JSSE 实现,到目前为止还没有找到适用于 tomcat 的具体文档。官方文档的连接器 block 如下:
<!-- Define an SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="${user.home}/.keystore" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"/>

这里是 ssl协议(protocol)属性有 TLS 默认为 TLS 1.2 版。我们尝试将其更改为 TLSv1.3,但没有成功。另外,如前所述 here尝试添加 sslEnabled 协议(protocol) 属性。那也没有用。我们添加了 TLSv1.3 握手成功所需的必要密码。

我们如何配置 server.xml 连接器 block 以支持 TLSv1.3 是我们想要弄清楚的。任何输入,提示都会有所帮助。

最佳答案

使用两个 sslProtocol="TLS"sslEnabledProtocols="TLSv1.2+TLSv1.3" .
这对我有用(在带有 java 13.0.1 的 tomcat 9 上)

关于java - 如何使用 JSSE 实现在 tomcat 8.5.5 中启用 TLSv1.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60634858/

相关文章:

java - 正则表达式使用分隔符(分号;)分割字符串,但出现在字符串内部的字符串除外

apache - 具有 SSL 直通到具有多个后端的多个域的 HAProxy

ssl - 在受支持的版本上握手失败

java - 严重 : Error configuring application listener of class org. apache.catalina.deploy.ApplicationListener

eclipse - 如何使用 eclipse 将我的 gradle web 应用程序部署到 tomcat

java - 在 JPA OneToOne 关系中更改项目后如何删除行?

java - String.format 无法在某些设备上格式化数字?

java - 用于验证 Apple Pay 中的商家的 Tomcat java servlet

java - Tomcat7 Ubuntu 14.04 将 $CATALINA_HOME 指向 var/lib/tomcat7/ROOT

python - 在 python 中测量 TLS 握手性能时间