【问题标题】:Gradle build fails due to sun.security.validator.ValidatorException despite installing certificates尽管安装了证书,但由于 sun.security.validator.ValidatorException 导致 Gradle 构建失败
【发布时间】:2020-03-17 10:16:16
【问题描述】:

我正在尝试按照他们的指示运行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.pomhttps://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_HOME环境变量正确指向/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk吗?
  • 它指向/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home@michalk
  • 我用echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile设置这个。

标签: java macos gradle java-8 ssl-certificate


【解决方案1】:

SSL certificate 开始时不是自签名的,因此不需要手动添加。尝试重新安装 Java 或将备用安装位置设置为 $JAVA_HOME,并使用默认的 cacerts 文件。有些东西似乎坏了,因为它不应该拒绝repo1.maven.org 的证书。 ls -la $JAVA_HOME/jre/lib/security/cacertscacerts 应该有大约 114757 字节。如果您位于防火墙后面,则可能需要 configure a proxy 获取 Gradle。

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

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

本项目还使用了一个相当outdated version的Gradle,例如:

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

【讨论】:

  • 我已经尝试卸载并重新安装 Java,擦除我的计算机并重新安装操作系统。我试过我的wifi,我学校的wifi,我手机的热点。当我打开那个 SSL 会话时,我看到这些行以及其他行:Verification error: unable to get local issuer certificateVerify return code: 20 (unable to get local issuer certificate)——这正常吗?
  • 我按照movingpackets.net/2015/03/18/… 中的步骤操作并通过指定-CAfile 使openssl 命令返回正常,因此我将CAfile 导出到SSL_CERT_FILE。但是java仍然存在问题
  • $JAVA_HOME/jre/lib/security/cacerts 应该与传递-CAfile 相同。尝试keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts | grep DigiCert 以查看该密钥库是否有效并了解 DigiCert,它是相关证书的颁发者。
  • openssl s_client -CAfile $JAVA_HOME/jre/lib/security/cacerts -connect repo1.maven.org:443最终openssl 连接,但仍使用 Java 密钥库(假设它可以读取格式)。这将是验证链所需的 CA 证书:DigiCertSHA2SecureServerCA.crt
猜你喜欢
  • 2016-10-15
  • 1970-01-01
  • 2017-02-07
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 2021-01-18
  • 2021-11-30
相关资源
最近更新 更多