Java不信任Windows上的任何SSL证书
使用Maven或Gradle构建时,依赖项下载过程失败,因为Java不信任Windows上的任何SSL证书。是否存在使Java信任来自Maven存储库的证书的方法Java不信任Windows上的任何SSL证书,java,ssl,gradle,Java,Ssl,Gradle,使用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 x
提前感谢有多种方法可以做到这一点 1) 您可以使用keytool命令将maven存储库的所有CA和中间证书添加到Java信任存储中。 你可以这样做
openssl s_client -showcerts -connect <SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >certificate.pem
添加到信任存储
keytool -import -alias your-alias -keystore cacerts -file certificate.der
2) 如果希望绕过信任,可以在运行mvn时使用以下属性。
-Dmaven.wagen.http.ssl.unsecure=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"
参考资料:解决此问题并使其在现在和将来都能工作的简单可行的方法是将Maven的公共证书添加到Java可信存储(即Java密钥存储) 创建自己的java密钥存储并将其映射到默认值将是一项困难的任务。 只需获得证书(Maven的公共证书),然后按照 下面的步骤 如果服务器支持https,您可以使用openssl客户端或任何浏览器来获取公共数字证书。您可以单击浏览器中的“查看证书”,并通过单击地址栏上最左侧的图标保存它(带有带https的删除符号{必须删除或红色,因为证书不受信任}符号) 要通过openSSL命令获取证书(我假设在windows中默认情况下您不会使用openSSL,因此最好遵循浏览器方法,否则下载SSL客户端以获取证书,如果您找不到任何工具,我可以给您工具名) 获得证书后,请按照以下步骤操作。 1)转到您的[Java安装路径]\jre\lib\security 2)(Windows)使用“cmd”和CTRL+SHIFT+ENTER打开管理命令行 (确保在命令提示符下处于[Java安装路径]\jre\lib\security,否则必须将路径设置为system 环境变量) 3)运行keytool导入证书: …\bin\keytool-import-trustcacerts-keystore cacerts-storepass changeit-noprompt-alias yourlaliasname-file 路径\到\证书.cer 系统将提示您输入密钥库的密码 java密钥库的默认密码是changeit 完成了。从现在起,所有来自Maven的叶证书都将得到java的信任 要验证配置是否正确,可以使用 keytool-list-keystore-cacerts 输入密钥库密码:changeit
这列出了受信任存储(java密钥存储)中存在的证书。您能为我提供执行选项1的具体步骤吗?我尝试过从internet上使用几种方法,但都没有成功。我更新了答案,介绍了如何将证书添加到信任存储库URL。以上是我为项目导入证书以进行测试所遵循的步骤,因为我已使用自签名(默认为不受信任的证书)对java小程序进行了签名。它起作用了
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"