连接到服务时,在 tomcat 上运行的应用程序无法通过客户端身份验证

问题描述

我一直在用这个头撞墙一段时间,希望有人能解释我做错了什么。 我有一个部署了应用程序的 tomcat 服务器,并且正在联系另一个服务。一切正常,直到客户端在其负载均衡器上启用客户端身份验证。 Tomcat ->app->lb with client auth -> 端点 在 jvm 上启用握手调试返回:

javax.net.ssl|FINE|0F|myScheduler-1| UTC|ServerHellodone.java:151|Consuming ServerHellodone handshake message (
<empty>
)
javax.net.ssl|FINE|0F|myScheduler-1| UTC|CertificateMessage.java:299|No X.509 certificate for client authentication,use empty Certificate message instead
javax.net.ssl|FINE|0F|myScheduler-1| UTC|CertificateMessage.java:330|Produced client Certificate handshake message (
"Certificates": <empty list>
)

据我所知,这意味着没有找到符合客户端身份验证要求的证书。 应用程序和 tomcat 的 SSL 端口都有其定义的密钥库和密钥对,虽然不同,但两者都应该通过,因为客户端身份验证只要求使用某个 CA 签名的证书(它们都是)。在 cacerts 中,我拥有 CA 当局的所有必需证书。我尝试将证书本身放入 cacerts 但结果相同。 Tomcat 端口配置:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
            clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2"
            keystoreFile="/usr/local/tomcat/config/pkcs_keystore.jks"
            keystorePass="***************"
            keyAlias="server_alias" />

我尝试通过浏览器连接到端点,果然它要求我提供证书,我向它提供了“server_alias”证书,它完美无缺,所以我不知道为什么它不能与 tomcat 一起使用。

我是一名系统工程师,所以我不知道这是否可能是必须在应用程序本身内完成的事情?欢迎任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)