使用 Maven 或 Gradle 构建时,依赖项下载过程失败,因为 Java 不信任 Windows 上的任何 SSL 证书。有没有办法让 Java 信任来自 Maven 存储库的证书?
提前致谢
最佳答案
有多种方法可以做到这一点。
1) 您可以使用 keytool 命令将 Maven 存储库的所有 CA 和中间证书添加到您的 Java 信任库中。 你可以通过
openssl s_client -showcerts -connect <SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >certificate.pem
这会将证书保存在名为 cert.pem 的本地文件中 现在您已将此证书添加到您的信任库 转换为 .der 格式
openssl x509 -outform der -in certificate.pem -out certificate.der
添加到信任库。
keytool -import -alias your-alias -keystore cacerts -file certificate.der
2) 如果您想绕过信任,您可以在运行 mvn 时使用以下属性。 -Dmaven.wagon.http.ssl.insecure=true
3) 如果您计划绕过 Java Trsut 存储并想要您自己的信任存储,您可以设置 MAVEN_OPTS 环境变量
MAVEN_OPTS="-Xmx512m -Djavax.net.ssl.trustStore=trust.jks \
-Djavax.net.ssl.trustStorePassword= \
-Djavax.net.ssl.keyStore=/home/directory/mycertificate.p12 \
-Djavax.net.ssl.keyStoreType=pkcs12 \
-Djavax.net.ssl.keyStorePassword=XXXXXX"
引用:https://maven.apache.org/guides/mini/guide-repository-ssl.html
关于Java 不信任 Windows 上的任何 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36458783/