Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java不信任Windows上的任何SSL证书_Java_Ssl_Gradle - Fatal编程技术网

Java不信任Windows上的任何SSL证书

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

使用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 
添加到信任存储

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"