使用Maven或Gradle构建时,依赖项下载过程失败,因为Java不信任Windows上的任何SSL证书。有没有让Java信任来自Maven存储库的证书?
提前致谢
答案 0 :(得分:2)
有多种方法可以做到这一点。
1)您可以使用keytool命令将maven存储库的所有CA和中间证书添加到Java信任库。 你可以通过
来做到这一点openssl s_client -showcerts -connect <SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >certificate.pem
这会将certicate保存在名为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 =真
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
答案 1 :(得分:1)
解决问题并使其适用于现在和将来的简单而可能的方法是将Maven的公共证书添加到Java可信存储(即java密钥库)。
创建自己的java密钥库并将其映射到默认值将是一项艰巨的任务。
获取证书(Maven的公共证书),然后按照 以下步骤
如果服务器支持https以获取公共数字证书,则可以使用openssl客户端或任何浏览器。您可以在浏览器中单击查看证书并通过单击地址栏上最左侧的图标进行保存(使用https striked {必须是striked或红色,因为证书不可信}}符号
通过openSSL命令获取证书(我假设你在windows中默认没有openssl,所以最好遵循浏览器方法,否则下载SSL客户端获取证书,我可以给你工具名称,如果你无法找到任何工具。
获得证书后,请按照以下步骤操作。
1)转到[Java安装路径] \ jre \ lib \ security
2)(Windows)使用&#39; cmd&#39;打开管理命令行和CTRL + SHIFT + ENTER
(确保您在命令提示符下的[Java安装路径] \ jre \ lib \ security中,否则您必须设置系统路径 环境变量)
3)运行keytool导入证书:
.... \ bin \ keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias yourAliasName -file 路径\到\ certificate.cer 强>
系统将提示您输入密钥库的密码
java密钥库的默认密码为 changeit
完成。从现在开始,来自Maven的所有叶子证书都将受到java的信任。
要验证您的配置是否正确,您可以使用
keytool -list -keystore cacerts
输入密钥库密码:changeit
这列出了受信任存储(java密钥库)中存在的证书