951 Stimmen

"PKIX Pfadkonstruktion fehlgeschlagen" and "kein gültiger Zertifikat-Pfad zum angeforderten Ziel gefunden"

Ich versuche, Tweets mit der Twitter4j-Bibliothek für mein Java-Projekt abzurufen, die unter Verwendung von java.net.HttpURLConnection (wie im Stack-Trace zu sehen ist) funktioniert. Bei meinem ersten Versuch erhielt ich einen Fehler bezüglich des Zertifikats sun.security.validator.ValidatorException und sun.security.provider.certpath.SunCertPathBuilderException. Dann fügte ich das Twitter-Zertifikat hinzu, indem ich folgendes durchführte:

C:\Program Files\Java\jdk1.7.0_45\jre\lib\security>keytool -importcert -trustcacerts -file PfadZuZertifikat -alias ca_alias -keystore "C:\Program Files\Java\jdk1.7.0_45\jre\lib\security\cacerts"

Aber ohne Erfolg. Hier ist das Verfahren zum Abrufen von Tweets:

public static void main(String[] args) throws TwitterException {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
        .setOAuthConsumerKey("meinConsumerKey")
        .setOAuthConsumerSecret("meinConsumerSecret")
        .setOAuthAccessToken("meinAccessToken")
        .setOAuthAccessTokenSecret("meinAccessTokenSecret");

    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();

    try {
        Query query = new Query("iphone");
        QueryResult result;
        result = twitter.search(query);
        System.out.println("Gesamtzahl der Tweets: " + result.getTweets().size());
        List tweets = result.getTweets();

        for (Status tweet : tweets) {
            System.out.println("@" + tweet.getUser().getScreenName() + " : " + tweet.getText());
        }
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Fehler beim Suchen von Tweets: " + te.getMessage());
    }

Und hier ist der Fehler:

sun.security.validator.ValidatorException: PKIX-Pfadaufbau fehlgeschlagen: sun.security.provider.certpath.SunCertPathBuilderException: Kann gültigen Zertifikatspfad zum angeforderten Ziel nicht finden
Relevante Diskussionen finden Sie im Internet unter:
    http://www.google.co.jp/search?q=d35baff5 oder
    http://www.google.co.jp/search?q=1446302e
TwitterException{exceptionCode=[d35baff5-1446302e 43208640-747fd158 43208640-747fd158 43208640-747fd158], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.5}
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:81)
    at twitter4j.TwitterImpl.get(TwitterImpl.java:1929)
    at twitter4j.TwitterImpl.search(TwitterImpl.java:306)
    at jku.cc.servlets.TweetsAnalyzer.main(TweetsAnalyzer.java:38)
Verursacht durch: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX-Pfadaufbau fehlgeschlagen: sun.security.provider.certpath.SunCertPathBuilderException: Kann gültigen Zertifikatspfad zum angeforderten Ziel nicht finden
    at sun.security.ssl.Alerts.getSSLException(Unbekannter Quelltext)
    at sun.security.ssl.SSLSocketImpl.fatal(Unbekannter Quelltext)
    at sun.security.ssl.Handshaker.fatalSE(Unbekannter Quelltext)
    at sun.security.ssl.Handshaker.fatalSE(Unbekannter Quelltext)
    ...

-1voto

olyanren Punkte 1408

Dies ist für den Glassfish Server:

Normalerweise sucht Glassfish nach der Zertifikatdatei cacerts.jks, die im GLASSFISH_SERVER\glassfish\domains\domain1\config Verzeichnis gespeichert ist. Sie können diese Konfiguration ändern oder die cacerts.jks Datei durch Ihre eigene cacerts Datei ersetzen.

Es gibt einige Standard-JVM-Optionen, die Glassfish verwendet:

 -XX:+UnlockDiagnosticVMOptions
 -XX:NewRatio=2
 -XX:MaxPermSize=192m
 -Xmx512m
 -client
 -javaagent:C:/glassfish5/glassfish/lib/monitor/flashlight-agent.jar
 -Djavax.xml.accessExternalSchema=all
 -Djavax.net.ssl.trustStore=C:\glassfish5\glassfish\domains\domain1/config/cacerts.jks
 -Djdk.tls.rejectClientInitiatedRenegotiation=true
 -Djdk.corba.allowOutputStreamSubclass=true

-1voto

ketan Punkte 1

Normalerweise tritt diese Art von Ausnahme auf, wenn es einen Fehler im Pfad des vertrauenswürdigen Zertifikats gibt. Überprüfen Sie die Konfiguration oder den Pfad, wo dieses Serverzertifikat für eine sichere Kommunikation erforderlich ist.

-1voto

Ganesa Vijayakumar Punkte 2206

Es ist eine Ergänzung zur Antwort https://stackoverflow.com/a/36427118/1491414. Danke @MagGGG

  • Bitte stellen Sie sicher, dass Sie Administratorberechtigungen haben
  • Bitte verwenden Sie doppelte Anführungszeichen für den Speicherort des Keystores (-keystore C:\Program Files (x86)\Java\jre1.6.0_22\lib\security\cacerts"), da bei Windows OS der Standardinstallationsort Program Files ist und Sie aufgrund des Leerzeichens zwischen Program Files einen Fehler erhalten werden.

-1voto

AndroDev Punkte 3106

Ich habe das mit der folgenden Methode behoben -

  1. Kopieren Sie die URL, die Verbindungsprobleme hat
  2. Gehen Sie zu Android Studio->Einstellungen->Http-Einstellungen
  3. Fügen Sie die URL unter "Testverbindung" ein und klicken Sie auf OK
  4. Nach dem Klicken auf OK fordert Android Studio auf, das Zertifikat dieser URL zu importieren, importieren Sie es
  5. Das ist alles. Es muss nichts weiter getan werden und mein Problem war gelöst. Es ist auch nicht erforderlich, das Studio neu zu starten.

-1voto

Karol Murawski Punkte 187

Wenn Sie den oben genannten Fehler mit Atlassian-Software haben, z. B. Jira

2018-08-18 11:35:00,312 Caesium-1-4 WARN anonym Default Mail Handler [c.a.mail.incoming.mailfetcherservice] Default Mail Handler[10001]: javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX-Pfad konnte nicht erstellt werden: sun.security.provider.certpath.SunCertPathBuilderException: ungültiger Zertifikatspfad zum angeforderten Ziel konnte nicht gefunden werden beim Verbinden mit dem Host 'imap.xyz.pl' als Benutzer 'jira@xyz.pl' über das Protokoll 'imaps', verursacht durch: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX-Pfad konnte nicht erstellt werden: sun.security.provider.certpath.SunCertPathBuilderException: ungültiger Zertifikatspfad zum angeforderten Ziel konnte nicht gefunden werden

Sie können Zertifikate zu seinem vertrauenswürdigen Keystore hinzufügen (ändern Sie missing_ca in den richtigen Zertifikatsnamen):

keytool -importcert -file missing_ca.crt -alias missing_ca -keystore /opt/atlassian/jira/jre/lib/security/cacerts

Wenn nach einem Passwort gefragt wird, geben Sie changeit ein und bestätigen Sie mit y

Danach starten Sie einfach Jira neu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X