Сборка Gradle завершается неудачно из-за исключения sun.security.validator.ValidatorException, несмотря на установку сертификатов - PullRequest
4 голосов
/ 17 марта 2020

Я пытаюсь запустить 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

Я использую Java 1.8.0_241 (и только тот, который установлен) на MacOS Mojave 10.14.6. Я установил последние обновления безопасности, а затем перезагрузил компьютер. Я пытался сделать это на моем обычном Wi-Fi и в точке доступа моего телефона.

Я следовал инструкциям в принятом ответе здесь , загружая сертификаты безопасности как из 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, чтобы убедиться, что сертификат выглядит нормально.

1 Ответ

5 голосов
/ 19 марта 2020

То, что 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
...