我有2个基于Spring Boot的应用程序。应用程序使用SSL部署。这些应用程序具有同时也是HTTPS的LoadBalancer。因此,LoadBalancer URL的客户端是HTTPS,而后端服务器的LoadBalancer也是HTTPS。
LoadBalancer和后端服务器的证书不同。
因此,Loadbalancer1中的证书具有CN = app1.test.com。 Loadbalancer2中的证书具有CN = app2.test.com。
两者的根CA相同。
app1和app2的后端服务器中的证书与CN = app.test.com相同,而根CA在这里不同。
客户端正在app1服务器中运行,并试图访问app2.test.com。
信任库具有两个证书的根CA。
但是,仍然出现以下错误。
app2服务器上发生错误。
代码:
x509TrustManager.checkClientTrusted(new X509Certificate[] { certificate }, “RSA”);
上面的代码出错。
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:227)
at sun.security.ssl.X509TrustManagerImpl.checkClientTrusted(X509TrustManagerImpl.java:99)
at
......... ..............
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
... 64 common frames omitted
2018-11-30T06:45:18.108+0000 DEBUG : loggerName