„Erstellen des PKIX-Pfads fehlgeschlagen“ und „Kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden“
Lesezeit: 15 Minuten
bofanda
Ich versuche, Tweets mit der twitter4j-Bibliothek für mein Java-Projekt zu erhalten, das unter der Decke verwendet wird java.net.HttpURLConnection (wie im Stacktrace ersichtlich). Bei meinem ersten Lauf bekam ich einen Fehler bezüglich des Zertifikats sun.security.validator.ValidatorException und sun.security.provider.certpath.SunCertPathBuilderException. Dann habe ich das Twitter-Zertifikat hinzugefügt von:
public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("myConsumerKey")
.setOAuthConsumerSecret("myConsumerSecret")
.setOAuthAccessToken("myAccessToken")
.setOAuthAccessTokenSecret("myAccessTokenSecret");
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("Total amount of tweets: " + result.getTweets().size());
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + " : " + tweet.getText());
}
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
}
Und hier ist der Fehler:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=d35baff5 or
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)
Caused by: 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
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34)
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:141)
... 5 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 20 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 26 more
Failed to search tweets: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Bitte beziehen Sie sich auf diese Antwort für die Lösung und bestätigen Sie, dass Sie Ihre Software als gebündeltes jre packen? Wenn ja, kopieren Sie Ihr cacerts-Dateiformularsystem und ersetzen Sie diese gepackte jre cacerts-Datei.
– positive Krux
4. November 2016 um 7:49 Uhr
versuchen Sie es mit stackoverflow.com/a/9210661/4741746, vielleicht ist dies Ihre Antwort
– sushant gosavi
7. November 2016 um 12:32 Uhr
Ich habe gerade diesen Java-Code verwendet und für https nicht vergessen, den Port als 443 anzugeben. Java-Code unter github.com/escline/InstallCert/blob/master/InstallCert.java Es nimmt Ihre CACERTS-Datei und fügt all diese plus das aktuelle Zertifikat für die URL hinzu, die Sie als Eingabe angeben. In meinem Fall habe ich die Werte fest auf host=”mywebservice.uat.xyz.com” codiert; port=443; passphrase=”changeit”.toCharArray(); Dann erstellt das Programm eine neue Datei namens “jssecacerts”, die alles enthalten wird. Benennen Sie dies in “cacerts” um und verwenden Sie diese . Sie werden bereit sein.
– Reddymails
13. Juni 2017 um 17:51 Uhr
Beantwortet das deine Frage? Beheben von javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX-Pfadaufbau fehlgeschlagen Fehler?
– Rogerpack
22. Februar 2021 um 16:08 Uhr
Jeremy Goodell
Nachdem ich viele Stunden lang versucht hatte, Zertifikatsdateien zu erstellen, damit meine Java 6-Installation mit den neuen Twitter-Zertifikaten funktioniert, bin ich schließlich auf eine unglaublich einfache Lösung gestoßen, die in einem Kommentar in einem der Message Boards vergraben war. Kopieren Sie einfach die cacerts-Datei aus einer Java 7-Installation und überschreiben Sie die in Ihrer Java 6-Installation. Wahrscheinlich ist es am besten, zuerst eine Sicherungskopie der cacerts-Datei zu erstellen, aber dann kopieren Sie einfach die neue Datei hinein und BOOM! es funktioniert einfach.
Beachten Sie, dass ich tatsächlich eine Windows-cacerts-Datei auf eine Linux-Installation kopiert habe und es einwandfrei funktioniert hat.
Die Datei befindet sich in jre/lib/security/cacerts sowohl in der alten als auch in der neuen Java jdk-Installation.
Ich hoffe, das erspart jemand anderem Stunden des Ärgers.
Ich versuche, mit einem selbstsignierten Zertifikat auf einen SSL-Server zuzugreifen, habe versucht, sein Zertifikat mit Keytool hinzuzufügen, aber kein Glück, irgendwelche Vorschläge?
– Oleg Belousow
3. März 2014 um 17:10 Uhr
Ich bin froh, dass es funktioniert hat. Aber wissen Sie, was die Ursache war? Was hat dazu geführt, dass es mit Java 6-Zertifikaten fehlgeschlagen ist. Und wie haben die Java 7-Zertifikate das Problem behoben
– Vishwanath gowda k
29. Oktober 2014 um 7:01 Uhr
Dies hat es getan, obwohl ich von icedtea 1.6 zu oracle 1.7 gewechselt bin. 🙂
– mike3996
15. November 2014 um 13:42 Uhr
Ziehen Sie auch diese Lösung in Betracht: stackoverflow.com/questions/33439905/…
– Piohen
12. April 2016 um 14:37 Uhr
Für diejenigen, die wie ich manchmal das Offensichtliche verpassen – stellen Sie sicher, dass Sie darauf eingehen $JAVA_HOME/jre/libnicht $JAVA_HOME/lib — Ich habe ein bisschen Zeit damit verbracht, dieses Detail zu übersehen.
– Ryan Heathcote
14. Juli 2016 um 16:47 Uhr
Auf einem Mac mit CMD-Line sollte sudo verwendet werden, um den Befehl auszuführen. # sudo keytool -importcert -file jetty.crt -alias jetty -keystore $JAVA_HOME/jre/lib/security/cacerts
– Malajisi
20. März 2017 um 9:56 Uhr
Unter Windows funktioniert der Befehl: keytool -importcert -file dinardap_cert.cer –alias dinardap –keystore “%JAVA_HOME%/jre/lib/security/cacerts”
– Gabriel Patricio Bonilla
26. Juli 2017 um 20:13 Uhr
wo bekommt man die cert datei her? Ich kann nicht sagen, zu welcher URL ich gehen soll. Steg. com ?
– Kraftteufel
5. September 2017 um 2:13 Uhr
Ich habe mein Zertifikat erhalten, indem ich es aus dem Webbrowser exportiert habe, Kontextaktion auf dem Vorhängeschloss
– rtbf
2. März 2020 um 13:51 Uhr
Dies scheint viel einfacher zu sein, als von der Befehlszeile aus zu arbeiten.
– Vasudevan Kannan
9. Juli 2020 um 17:02 Uhr
Lu55
1. Prüfen Sie das Zertifikat
Versuchen Sie, die Ziel-URL im Browser zu laden und das Zertifikat der Website anzuzeigen (normalerweise ist es über das Symbol mit dem Schlosssymbol zugänglich. Es befindet sich auf der linken oder rechten Seite der Adressleiste des Browsers), unabhängig davon, ob es abgelaufen oder aus anderen Gründen nicht vertrauenswürdig ist.
2. Installieren Sie die neuesten Versionen von JRE und JDK
Neue Versionen werden normalerweise mit dem aktualisierten Satz der vertrauenswürdigen Zertifikate geliefert.
Wenn es möglich ist, deinstallieren Sie auch alte Versionen. Dadurch werden Fehlkonfigurationsfehler deutlich.
3. Überprüfen Sie Ihre Konfiguration:
Überprüfen Sie, wohin Ihre Umgebungsvariable JAVA_HOME zeigt.
Überprüfen Sie, welche Java-Version Sie zum Ausführen des Programms verwenden. In IntelliJ prüfen:
Datei -> Projektstruktur… -> Projekteinstellungen -> Projekt -> Projekt-SDK:
4. Kopieren Sie den gesamten Schlüsselspeicher aus der neuen Java-Version
Wenn Sie unter dem JDK etwas anderes als das neueste verfügbare entwickeln, versuchen Sie, das zu ersetzen %JAVA_HOME%/jre/lib/security/cacerts Datei mit der neuen aus der zuletzt installierten JRE (erstellen Sie zuerst eine Sicherungskopie), wie @jeremy-goodell in seiner Antwort vorschlägt
5. Fügen Sie Zertifikate zu Ihrem Schlüsselspeicher hinzu
Wenn nichts oben genanntes Ihr Problem löst, verwenden Sie keytool So speichern Sie Zertifikate im Keystore von Java:
So gut ausgearbeitet dies ist, sollte es die akzeptierte Antwort sein.
– Jegor Hans
23. März 2020 um 10:10 Uhr
Sollte sein keytool -list -trustcacerts -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit auf Mac
– Franz Bacon
1. Juli 2020 um 4:35 Uhr
Ich habe versucht, mit einem von LetsEncrypt generierten Zertifikat auf eine Website zuzugreifen, und ein Upgrade auf eine Java-Version >= 8u101 hat das Problem behoben – letsencrypt.org/docs/certificate-compatibility
Es wird verwendet, um die Zertifikatsvalidierung zu überspringen.
Warnung
Nur für Entwicklungszwecke verwenden, da dies unsicher ist!
So gut ausgearbeitet dies ist, sollte es die akzeptierte Antwort sein.
– Jegor Hans
23. März 2020 um 10:10 Uhr
Sollte sein keytool -list -trustcacerts -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit auf Mac
– Franz Bacon
1. Juli 2020 um 4:35 Uhr
Ich habe versucht, mit einem von LetsEncrypt generierten Zertifikat auf eine Website zuzugreifen, und ein Upgrade auf eine Java-Version >= 8u101 hat das Problem behoben – letsencrypt.org/docs/certificate-compatibility
– paulcm
10. September 2020 um 14:31 Uhr
Shashank Agrawal
Ich bin auf dieses Problem gestoßen, dessen Behebung viele Stunden der Recherche erforderte, insbesondere bei automatisch generierten Zertifikaten, die im Gegensatz zu offiziellen Zertifikaten ziemlich knifflig sind und Java sie nicht so sehr mag.
Grundsätzlich müssen Sie das Zertifikat vom Server zu den Java Home-Zertifikaten hinzufügen.
Generieren oder erhalten Sie Ihr Zertifikat und konfigurieren Sie Tomcat so, dass es in Servers.xml verwendet wird
Laden Sie den Java-Quellcode der Klasse herunter InstallCert und führen Sie es aus, während der Server läuft, und geben Sie die folgenden Argumente an server[:port]. Es wird kein Passwort benötigt, da das ursprüngliche Passwort für die Java-Zertifikate (“changeit”) funktioniert.
Das Programm stellt eine Verbindung zum Server her und Java löst eine Ausnahme aus, analysiert das vom Server bereitgestellte Zertifikat und ermöglicht Ihnen, ein zu erstellen jssecerts Datei in dem Verzeichnis, in dem Sie das Programm ausgeführt haben (Wenn es von Eclipse ausgeführt wird, stellen Sie sicher, dass Sie das Arbeitsverzeichnis in konfigurieren Run -> Configurations).
Kopieren Sie diese Datei manuell nach $JAVA_HOME/jre/lib/security
Nachdem Sie diese Schritte ausgeführt haben, werden die Verbindungen mit dem Zertifikat keine Ausnahmen mehr in Java generieren.
Der folgende Quellcode ist wichtig und aus (Sun) Oracle-Blogs verschwunden. Die einzige Seite, auf der ich ihn gefunden habe, war der angegebene Link. Daher füge ich ihn der Antwort als Referenz bei.
/*
* Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Originally from:
* http://blogs.sun.com/andreas/resource/InstallCert.java
* Use:
* java InstallCert hostname
* Example:
*% java InstallCert ecc.fedora.redhat.com
*/
import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
/**
* Class used to add the server's certificate to the KeyStore
* with your trusted certificates.
*/
public class InstallCert {
public static void main(String[] args) throws Exception {
String host;
int port;
char[] passphrase;
if ((args.length == 1) || (args.length == 2)) {
String[] c = args[0].split(":");
host = c[0];
port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
String p = (args.length == 1) ? "changeit" : args[1];
passphrase = p.toCharArray();
} else {
System.out.println("Usage: java InstallCert [:port] [passphrase]");
return;
}
File file = new File("jssecacerts");
if (file.isFile() == false) {
char SEP = File.separatorChar;
File dir = new File(System.getProperty("java.home") + SEP
+ "lib" + SEP + "security");
file = new File(dir, "jssecacerts");
if (file.isFile() == false) {
file = new File(dir, "cacerts");
}
}
System.out.println("Loading KeyStore " + file + "...");
InputStream in = new FileInputStream(file);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(in, passphrase);
in.close();
SSLContext context = SSLContext.getInstance("TLS");
TrustManagerFactory tmf =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];
SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
context.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory factory = context.getSocketFactory();
System.out.println("Opening connection to " + host + ":" + port + "...");
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setSoTimeout(10000);
try {
System.out.println("Starting SSL handshake...");
socket.startHandshake();
socket.close();
System.out.println();
System.out.println("No errors, certificate is already trusted");
} catch (SSLException e) {
System.out.println();
e.printStackTrace(System.out);
}
X509Certificate[] chain = tm.chain;
if (chain == null) {
System.out.println("Could not obtain server certificate chain");
return;
}
BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
System.out.println();
System.out.println("Server sent " + chain.length + " certificate(s):");
System.out.println();
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
MessageDigest md5 = MessageDigest.getInstance("MD5");
for (int i = 0; i < chain.length; i++) {
X509Certificate cert = chain[i];
System.out.println
(" " + (i + 1) + " Subject " + cert.getSubjectDN());
System.out.println(" Issuer " + cert.getIssuerDN());
sha1.update(cert.getEncoded());
System.out.println(" sha1 " + toHexString(sha1.digest()));
md5.update(cert.getEncoded());
System.out.println(" md5 " + toHexString(md5.digest()));
System.out.println();
}
System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
String line = reader.readLine().trim();
int k;
try {
k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
} catch (NumberFormatException e) {
System.out.println("KeyStore not changed");
return;
}
X509Certificate cert = chain[k];
String alias = host + "-" + (k + 1);
ks.setCertificateEntry(alias, cert);
OutputStream out = new FileOutputStream("jssecacerts");
ks.store(out, passphrase);
out.close();
System.out.println();
System.out.println(cert);
System.out.println();
System.out.println
("Added certificate to keystore 'jssecacerts' using alias '"
+ alias + "'");
}
private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();
private static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 3);
for (int b : bytes) {
b &= 0xff;
sb.append(HEXDIGITS[b >> 4]);
sb.append(HEXDIGITS[b & 15]);
sb.append(' ');
}
return sb.toString();
}
private static class SavingTrustManager implements X509TrustManager {
private final X509TrustManager tm;
private X509Certificate[] chain;
SavingTrustManager(X509TrustManager tm) {
this.tm = tm;
}
public X509Certificate[] getAcceptedIssuers() {
throw new UnsupportedOperationException();
}
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
throw new UnsupportedOperationException();
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
this.chain = chain;
tm.checkServerTrusted(chain, authType);
}
}
}
Beachten Sie, dass die erstellte Datei jssecacerts ist!
– DeanDP
3. Februar 2016 um 20:10 Uhr
Ich habe versucht, diese Lösung für Java 7 und 8 zu verwenden. Während der Ausführung unter Java 7 erhielt ich protocol_version oder handshake_failure für alle Remote-Repository-URLs, mit denen ich es versucht habe. SandeepanNath:test sandeepan.nath$ java InstallCert repo1.maven.org:443 Loading KeyStore /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/security/cacerts... Opening connection to repo1.maven.org:443 ... Starting SSL handshake... javax.net.ssl.SSLException: Received fatal alert: protocol_version .. Could not obtain server certificate chain
– Sandeepan Nath
11. Juni 2020 um 17:38 Uhr
9719300cookie-check„Erstellen des PKIX-Pfads fehlgeschlagen“ und „Kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden“yes
Hallo. Bitte überprüfen Sie die folgende URL. Ich bin sicher, diese werden Ihnen helfen. java-samples.com/showtutorial.php?tutorialid=210 confluence.atlassian.com/display/JIRAKB/…. Sie müssen Ihr SSL-Zertifikat zum Java-Truststore-Zertifikat hinzufügen (Pfad: jre/lib/security/cacerts).
– sus007
1. Dezember 2014 um 13:59 Uhr
Bitte beziehen Sie sich auf diese Antwort für die Lösung und bestätigen Sie, dass Sie Ihre Software als gebündeltes jre packen? Wenn ja, kopieren Sie Ihr cacerts-Dateiformularsystem und ersetzen Sie diese gepackte jre cacerts-Datei.
– positive Krux
4. November 2016 um 7:49 Uhr
versuchen Sie es mit stackoverflow.com/a/9210661/4741746, vielleicht ist dies Ihre Antwort
– sushant gosavi
7. November 2016 um 12:32 Uhr
Ich habe gerade diesen Java-Code verwendet und für https nicht vergessen, den Port als 443 anzugeben. Java-Code unter github.com/escline/InstallCert/blob/master/InstallCert.java Es nimmt Ihre CACERTS-Datei und fügt all diese plus das aktuelle Zertifikat für die URL hinzu, die Sie als Eingabe angeben. In meinem Fall habe ich die Werte fest auf host=”mywebservice.uat.xyz.com” codiert; port=443; passphrase=”changeit”.toCharArray(); Dann erstellt das Programm eine neue Datei namens “jssecacerts”, die alles enthalten wird. Benennen Sie dies in “cacerts” um und verwenden Sie diese . Sie werden bereit sein.
– Reddymails
13. Juni 2017 um 17:51 Uhr
Beantwortet das deine Frage? Beheben von javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX-Pfadaufbau fehlgeschlagen Fehler?
– Rogerpack
22. Februar 2021 um 16:08 Uhr