java SpringBoot MVC警告:org。阿帕奇。公猫util。网SSLUtilBase:JSSE TLS 1.3实现不支持身份验证
关于使用Tomcat和TLSv1的Spring Boot MVC的问题。三,
我曾经有一个Spring Boot MVC,基于Tomcat的web应用程序,通过ssl HTTPS具有非常简单的业务逻辑
根据安全团队的审查,我不得不从TLSv1中删除TLS版本。2至TLSv1。三,
想法很简单,可以轻松完成这项任务,我去换了我的财产:
server.ssl.enabled-protocols=TLSv1.2
到
server.ssl.enabled-protocols=TLSv1.3
但是,从那时起,我在每次启动应用程序时都会看到:
组织。阿帕奇。公猫util。网SSLUtilBase:JSSE TLS 1.3实现不支持初始握手后的身份验证,因此与可选的客户端身份验证不兼容
请问这是什么意思
它“危险”吗
请问怎么修
多谢各位
# 1 楼答案
握手后客户端身份验证是TLSv1。3 RFC8446中定义的扩展。但是OpenJDK没有实现它,也不会实现它。corresponding issue标记为“不会修复”
该警告由Tomcat在SSLUtilBase.java中发出
isTls13RenegAuthAvailable()
方法在JSSEUtil.java中定义要删除此警告,可以将Tomcat的SSLHostConfig中的CertificateVerification设置为
NONE
或REQUIRED
。您可以通过Spring引导属性server.ssl.client-auth来实现,该属性接受值NONE
、WANT
和NEED
如果不使用客户端证书,请将其设置为
NONE
。如果使用客户机证书,请检查每个客户机是否可以使用NEED
值正确地进行身份验证。如果保持原样,唯一的风险是使用握手后身份验证的客户端将无法进行身份验证如果确实需要握手后客户端身份验证,则必须使用除JSSE之外的另一个TLS实现。您可以使用反向代理,例如Apache、NGINX、Traefik,或者为APR/OpenSSL使用Tomcat’s native绑定。关于这一点,你可以读到一篇有趣的文章:Tomcat Native / OpenSSL in Spring Boot 2.0