如何修改Tomcat服务器的TLS版本?修改sslProtocol不生效怎么办
Tomcat TLS版本配置不生效的排查解决方法
- 首先纠正配置参数误区:仅修改
sslProtocol字段无法控制实际生效的TLS版本,该字段仅声明TLS协议的基础支持族,要指定具体启用的TLS版本,需要新增sslEnabledProtocols属性配置。参考配置示例如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.1,TLSv1.2,TLSv1.3" />
需要启用哪些版本直接在sslEnabledProtocols的属性值里用逗号分隔填写即可。
- 检查JDK的TLS版本限制:JDK默认会禁用不安全的旧TLS版本,比如JDK 8u291+、JDK 11及以上版本默认禁用TLSv1、TLSv1.1。如果需要启用这些旧版本,需要修改JDK安装路径下的
jre/lib/security/java.security文件,找到jdk.tls.disabledAlgorithms配置项,将你需要启用的TLS版本从该配置的禁用列表中删除,保存后重启Tomcat才可生效。另外如果需要支持TLSv1.3,要求使用的JDK版本最低为JDK 8u361、JDK 11.0.9,低于该版本的JDK本身无TLSv1.3实现,配置后也不会生效。 - 确认Tomcat连接器类型适配:当前你使用的是NIO连接器,直接使用上述
sslEnabledProtocols参数即可。如果后续切换为APR/native连接器,参数规则一致无需额外调整,仅部分Tomcat 7及更早的旧版本需要调整参数名,主流的Tomcat 8.5+、9、10版本均适配上述配置。 - 配置验证:所有配置调整完成重启Tomcat后,可使用openssl命令验证对应版本是否生效,例如验证TLSv1.1是否启用的命令为
openssl s_client -connect 你的服务IP:8443 -tls1_1,正常握手成功即代表对应版本已生效。
内容的提问来源于stack exchange,提问作者Pk20
相关产品推荐
相关产品推荐

