2016-04-21 10 views
0
Downloading https://services.gradle.org/distributions/gradle-2.12-bin.zip 

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

ähnliche Ausgabe dazu:gradlew.bat (und gradlew) SSLHandShakeException auf Wrapper aber nicht auf installierte gradle

gradlew.bat (and gradlew) SSLHandShakeException

Außer, dass ich nur diese Ausnahme erhalten, wenn über die Wrapper-Ausführung? (Der installierte lokale Gradle-Befehl funktioniert ohne Probleme.) Ich habe die vorgeschlagenen Lösungen ausprobiert und kann sie einfach nicht zum Laufen bringen. Ich habe sogar heruntergeladen und installiert das Zertifikat von https://services.gradle.org/distributions/ in cacerts

keytool -import -file "C:\tmp\gradlew.x509.base64.cer" -alias gradle -keystore "C:\Apps\java\jre\lib\security\cacerts" 

ich den Befehl aus dem Wrapper bekam:

java -Dorg.gradle.appname=gradlew -classpath "C:\mystuff\gradle-2.12\samples\java\multiproject\\gradle\wrapper\gradle-wrapper.jar" org.gradle.wrapper.GradleWrapperMain clean 

Meine Vermutung vielleicht ist etwas falsch mit dem Zertifikat selbst oder vielleicht bin ich mit der falsche Kodierung?

$ java -version 
Picked up _JAVA_OPTIONS: -Xmx512M 
java version "1.7.0_25" 
Java(TM) SE Runtime Environment (build 1.7.0_25-b17) 
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) 

Um dies zu erschweren, Zertifikat von gradle Ich habe versucht die Installation der Methode, die hier vorgeschlagen verwenden, die (nach Ausgabe)

http://infposs.blogspot.ca/2013/06/installcert-and-java-7.html

Aber wenn ich laufe, den Wrapper gearbeitet zu haben scheint, ich bekomme immer noch den gleichen Fehler.

Antwort

0

Ich weiß nicht viel über SSL-Zertifikate, aber ich habe festgestellt, dass wenn ich versuche, Cert für die URL oben zu installieren, 2 Zertifikate tatsächlich zurückgegeben werden ... Werfen Sie einen genaueren Blick auf den Java-Code in InstallCert.java I bemerkte, dass es nur das erste Zertifikat installiert (naiv?).

Ich änderte den Code in InstallCert.java (hinzugefügt eine for-Schleife) und Viola, das Zertifikat wurde installiert und Gradle und Java waren glücklich, Handshakes auszutauschen und alle lebten glücklich bis ans Ende.

Hier ist der Code, den ich

geändert
for (int i = 0; i < chain.length; i++) { 

    final X509Certificate cert = chain[i]; 
    final String alias = host + "-" + (i + 1); 
    ks.setCertificateEntry(alias, cert); 

    final OutputStream out = new FileOutputStream(file); 
    ks.store(out, passphrase); 
    out.close(); 

    System.out.println(); 
    System.out.println(cert); 
    System.out.println(); 
    System.out.println(
      "Added certificate to keystore 'cacerts' using alias '" 
        + alias + "'"); 
} 

Es geht am Ende der Hauptfunktion, wo die eigentlichen Schlüsselspeicher Methoden aufgerufen werden.

Also, wenn Sie die Änderung oben InstallCert.java machen, ist Lösung recht einfach:

javac InstallCert.java 
java InstallCert services.gradle.org 

Durch die Art und Weise, was mich dazu gebracht, diesen Weg zu untersuchen ist, wenn ich den Client gegen eine ältere Version von Java lief (1.6 glaube ich), spuckt es den folgenden Fehler aus:

java.security.cert.CertPathValidatorException: The certificate issued by ... is not trusted; internal cause is: 
    java.security.cert.CertPathValidatorException: Certificate chaining error 
Verwandte Themen