在 IntelliJ IDEA 中为自定义(私有)Maven 存储库添加证书

del*_*svb 6 ssl repository intellij-idea maven

我最近建立了一个 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
Run Code Online (Sandbox Code Playgroud)

所以我尝试将我们的根证书添加到 IntelliJ 的服务器证书(IntelliJ 首选项 > 工具 > 服务器证书)并重新启动 IntelliJ,但错误仍然存​​在。

有没有其他人遇到过这个问题?

我的首选项窗口的屏幕截图:

Maven 存储库首选项

Blu*_*arf 0

您可以创建自定义信任库,将证书导入其中并让 JVM 使用它。

创建您的信任库:

keytool -genkey -alias "yourtruststore" -keyalg "RSA" -keystore "/path/to/your/truststore.jks"
Run Code Online (Sandbox Code Playgroud)

导入您的证书:

keytool -import -alias "your-certificate" -file "your-certificate.cer" -keystore "/path/to/your/truststore.jks" -storepass "changeit"
Run Code Online (Sandbox Code Playgroud)

通过 VM 选项让您的 JVM 使用它:

"-Djavax.net.ssl.trustStore=/path/to/your/truststore.jks" \
-Djavax.net.ssl.trustStorePassword=changeit
Run Code Online (Sandbox Code Playgroud)

在 IntelliJ IDEA 中:文件 | 设置 | 构建、执行、部署 | 构建工具| Maven | 跑步者:

Maven 设置