java - (eclipse) Junit 测试不使用 VM 参数中的 cacert 证书 - 无法找到请求目标的有效证书路径

标签 java eclipse spring-boot jvm certificate

所以我有一个 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/

相关文章:

java - Java 对象转换如何在幕后工作?

找不到配置文件/etc/startup.mk

spring-boot - Spring Boot 2.0.5 - Activemq 5.14.0 与带有 gradle 的设置记录器有关的问题

java - apache tomcat问题-404错误

java - Spring Boot应用程序不使用jemalloc

java - 如何使用MongoTemplate按顺序获取结果?

java - 电池广播接收器不工作

java - Android 将日志写入文件

java - 如何使用泛型类型访问静态内部类中的字段? (非常困难)

java - 如何在 Eclipse 中安装 java 库的源代码?