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

标签 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 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/

相关文章:

http - 无法使用 jmeter 打开特定的 HTTPS 页面

android - 检查Android套接字连接使用的ssl证书

android - 从 bash 中的 build.gradle 中读取 versionName

java - 数组列表。奇怪的东西

java - 关于java线程的 sleep 状态

java - 安装 SSL 证书后,Glassfish 对 HTTPS 没有响应

android - Gradle 等效导出

android - 如何避免两种口味的应用打开同一应用?

java - 当我以 pdf 形式向占位符插入值时,如何设置 iText 的编码?

java - Tesseract 没有识别结果(Android studio;Java)