尽管安装了证书,Gradle 构建仍因 sun.security.validator.ValidatorException 而失败

问题描述 投票:0回答:3

我正在尝试按照他们的说明运行 lenskit-hello。当我运行

./gradlew build
时,我收到错误

(base) Briennas-MBP:lenskit-hello-master briennakh$ ./gradlew build
:compileJava

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not resolve org.lenskit:lenskit-all:3.0-M3.
  Required by:
      :lenskit-hello-master 4.50.57 AM:unspecified
   > Could not resolve org.lenskit:lenskit-all:3.0-M3.
      > Could not get resource 'https://repo1.maven.org/maven2/org/lenskit/lenskit-all/3.0-M3/lenskit-all-3.0-M3.pom'.
         > Could not GET 'https://repo1.maven.org/maven2/org/lenskit/lenskit-all/3.0-M3/lenskit-all-3.0-M3.pom'.
            > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
   > Could not resolve org.lenskit:lenskit-all:3.0-M3.
      > Could not get resource 'https://jcenter.bintray.com/org/lenskit/lenskit-all/3.0-M3/lenskit-all-3.0-M3.pom'.
         > Could not GET 'https://jcenter.bintray.com/org/lenskit/lenskit-all/3.0-M3/lenskit-all-3.0-M3.pom'.
            > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 4.009 secs

我在 MacOS Mojave 10.14.6 上使用 Java 1.8.0_241(并且仅安装了该版本)。我已经安装了最新的安全更新,然后重新启动了计算机。我已经在我的常规 WiFi 和手机热点上尝试过此操作。

我按照接受的答案here中的说明进行操作,从

https://repo1.maven.org/maven2/org/lenskit/lenskit-all/3.0-M2/lenskit-all-3.0-M2.pom
https://oss.sonatype.org/content/repositories/snapshots/org/lenskit/lenskit-all/3.0-M2/lenskit-all-3.0-M2.pom
下载安全证书,并通过以下命令将它们添加到密钥库(仅显示两个命令之一):

keytool -import -alias maven -file /Users/briennakh/Downloads/maven.cer -keystore 
/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/jre/lib/security/cacerts

然后如果我检查

keytool -list -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/jre/lib/security/cacerts | grep maven

它显示我的证书已添加,

maven, Mar 17, 2020, trustedCertEntry
,但运行时仍然遇到相同的错误
./gradlew build

我还检查了

openssl x509 -in /Users/briennakh/Downloads/maven.pem -text
以确保证书看起来没问题。

java macos gradle java-8 ssl-certificate
3个回答
8
投票

SSL 证书 本来就不是自签名的,因此不需要手动添加。尝试重新安装 Java 或将备用安装位置设置为

$JAVA_HOME
,并使用默认的
cacerts
文件。有些东西似乎被破坏了,因为它不应该拒绝
repo1.maven.org
的证书。
ls -la $JAVA_HOME/jre/lib/security/cacerts
表示
cacerts
应该有大约 114757 字节。如果您位于防火墙后面,您可能需要为 Gradle 配置代理

这应该尝试 SSL 会话(不通过 Java):

$ openssl s_client -connect repo1.maven.org:443

这个项目还使用了 Gradle 的过时版本,例如:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

1
投票

将我的项目 Gradle JDK 版本设置为 JAVA_HOME 使用的版本解决了问题


0
投票

在网站上找到了这个方法(https://discuss.gradle.org/t/unable-to-build-a-java-project-due-to-certificates/46993)它解决了我的问题,没有附加任何内容java 证书和其他操作。但也许这并不安全!

~/.gradle/gradle.properties (MAC)

systemProp.javax.net.ssl.trustStore=/dev/null
systemProp.javax.net.ssl.trustStoreType=KeychainStore
systemProp.java.security.KeyStore=KeychainStore

(Windows)

systemProp.javax.net.ssl.trustStore=NUL
systemProp.javax.net.ssl.trustStoreType=Windows-ROOT
© www.soinside.com 2019 - 2024. All rights reserved.