我最近设置了一个 Artifactory 存储库并使用 SSL 证书保护它。它不是自签名的,但虽然大多数操作系统都预装了它,但 JRE 却没有。
问题是,在 Maven 存储库首选项窗口(IntelliJ 首选项 > 构建、执行、部署 > 构建工具 > Maven > 存储库)中包含我的服务器的记录在按下更新按钮时出现错误。这是来自
idea.log
的摘要:
Caused by: java.lang.RuntimeException: 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:382)
... 57 more
因此我尝试将我们的根证书添加到 IntelliJ 的服务器证书(IntelliJ 首选项 > 工具 > 服务器证书)并重新启动 IntelliJ,但错误仍然存在。
其他人之前有遇到过这样的问题吗?
我的首选项窗口的屏幕截图:
您可以创建自定义信任库,将证书导入其中并让 JVM 使用它。
创建您的信任库:
keytool -genkey -alias "yourtruststore" -keyalg "RSA" -keystore "/path/to/your/truststore.jks"
导入您的证书:
keytool -import -alias "your-certificate" -file "your-certificate.cer" -keystore "/path/to/your/truststore.jks" -storepass "changeit"
通过 VM 选项让您的 JVM 使用它:
"-Djavax.net.ssl.trustStore=/path/to/your/truststore.jks" \
-Djavax.net.ssl.trustStorePassword=changeit
在 IntelliJ IDEA 中:文件 |设置 |构建、执行、部署 |构建工具| Maven |跑步者: