所以我有一个 Spring Boot 应用程序,它通过我公司的代理对外部 URL 进行 API 调用,我们有一个证书存储文件,它允许我们访问该站点。在应用程序的 Eclipse 中,我在“中具有“VM 参数”运行配置”为
-Dhttps.proxyHost=http.proxy.mycompany.com -Dhttps.proxyPort=8001 -Djavax.net.ssl.trustStore=cacerts.jks
cacertsfile 位于我的项目的根目录中。这在 spring 应用程序中工作正常,但在具有相同 VM 参数的 JUnit 测试中,我收到错误
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
最佳答案
如果您不提供密码 (-Djavax.net.ssl.trustStorePassword=the-password
),则信任存储区毫无用处,并且您的代理设置不应影响 JVM 是否信任证书。最好的选择是使用以下内容更新 JRE 的 lib/security/cacerts
:
keytool -import \
-keystore /usr/lib/jvm/jre-1.8.0/lib/security/cacerts
-file /tmp/some-certificate.cer \
-alias some-alias
并确保 Eclipse 和 JUnit 使用该 JRE。
关于java - (eclipse) Junit 测试不使用 VM 参数中的 cacert 证书 - 无法找到请求目标的有效证书路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56953702/