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

Khushboo Punkte 2953

Bitte wählen Sie das Stammzertifikat aus. Standardmäßig wählen Browser das Kindzertifikat aus, das möglicherweise das Problem nicht löst. Weitere Details finden Sie in diesem Thread: unable to find valid certification path to requested target

-1voto

Smart Coder Punkte 901

Wenn Sie CloudFoundry verwenden und auf ein Zertifikatsproblem stoßen, müssen Sie sicherstellen, dass Sie das Jar erneut mit dem Keystore-Service und dem Zertifikat darin pushen. Einfaches Entbinden, Binden und Neustarten funktioniert nicht.

-1voto

Vineeta Punkte 83
  • Ändern Sie die JDK-Version von der älteren Version jdk1.8.0_90 zu einer neueren Version jdk1.8.0_239
  • Wie oben erwähnt, importieren Sie Zertifikate in den Keystore
  • Fügen Sie Keystore-Eigenschaften zur gradle.properties-Datei in Java-/React Native-basierten Android-Projekten hinzu

systemProp.javax.net.ssl.trustStore=C://Program Files//AdoptOpenJDK//jdk-8.0.282.8-hotspot//jre//lib//security//cacerts

systemProp.javax.net.ssl.trustStorePassword=changeit

-1voto

Sonali Das Punkte 1085

Das vertrauenswürdige Zertifikat wird im Schlüsseltool gespeichert. Wenn die vertrauenswürdigen Zertifikate einer Website nicht im Schlüsseltool hinzugefügt sind, tritt dieser Fehler auf. Zusätzlich zur obigen Antwort siehe bitte

Fehler bei der Erstellung des PKIX-Pfads in einem fehlerhaften Selenium-Linkskript

-1voto

Kundan Thakur Punkte 21

Wenn Sie ein Ubuntu/Linux-System verwenden, führen Sie den folgenden Befehl im Terminal aus.

cd /usr/local/share/ca-certificates

cp /Speicherort der Datei/----.crt . (Kopieren Sie die crt-Datei in /usr/local/share/ca-certificates)

sudo update-ca-certificates

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