gpt4 book ai didi

java - SpringBoot MVC - 警告 : org. apache.tomcat.util.net.SSLUtilBase : The JSSE TLS 1. 3 实现不支持身份验证

转载 作者:行者123 更新时间:2023-12-03 11:18:01 25 4
gpt4 key购买 nike

一个关于 Spring Boot MVC with Tomcat and TLSv1.3 的问题
我曾经有一个 Spring Boot MVC,基于 Tomcat 的 Web 应用程序,具有非常简单的业务逻辑,通过 ssl HTTPS。
根据安全团队的审查,我不得不将 TLS 版本从 TLSv1.2 升级到 TLSv1.3。
想法很简单,可以轻松完成这个任务,我去改变我的属性(property):

server.ssl.enabled-protocols=TLSv1.2
server.ssl.enabled-protocols=TLSv1.3
但是,从那时起,我在每个应用程序启动时都会得到这个:
org.apache.tomcat.util.net.SSLUtilBase :JSSE TLS 1.3 实现不支持初始握手后的身份验证,因此与可选的客户端身份验证不兼容
请问是什么意思?
危险吗”?
请问怎么修?
谢谢

最佳答案

握手后客户端身份验证是 RFC8446 中定义的 TLSv1.3 扩展。 .但是 OpenJDK 没有实现它,也不会实现它。 corresponding issue被标记为“不会修复”。
Tomcat 在 SSLUtilBase.java 中发出警告

if (enabledProtocols.contains(Constants.SSL_PROTO_TLSv1_3) &&
sslHostConfig.getCertificateVerification() == CertificateVerification.OPTIONAL &&
!isTls13RenegAuthAvailable() && warnTls13) {
log.warn(sm.getString("sslUtilBase.tls13.auth"));
}
isTls13RenegAuthAvailable()方法在 JSSEUtil.java 中定义
@Override
protected boolean isTls13RenegAuthAvailable() {
// TLS 1.3 does not support authentication after the initial handshake
return false;
}
要删除此警告,您可以设置 CertificateVerification在 Tomcat 的 SSLHostConfig 到 NONE或至 REQUIRED .您可以通过 Spring Boot 属性 server.ssl.client-auth取值 NONE , WANTNEED .
如果您不使用客户端证书,请将其设置为 NONE .如果您使用客户端证书,请检查每个客户端是否可以使用 NEED 正确验证自己。值(value)。如果您保留它,唯一的风险是使用握手后身份验证的客户端将无法进行身份验证。
如果您确实需要握手后客户端身份验证,则必须使用 JSSE 之外的另一个 TLS 实现。 .您可以使用反向代理,例如 Apache , NGINX , Traefik或使用 Tomcat’s native APR 的绑定(bind)/ OpenSSL .您可以阅读一篇有趣的文章: Tomcat Native / OpenSSL in Spring Boot 2.0

关于java - SpringBoot MVC - 警告 : org. apache.tomcat.util.net.SSLUtilBase : The JSSE TLS 1. 3 实现不支持身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64182147/

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