javax.net.ssl.SSLException: java.Sicherheit.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Weis ich parse eine XML-Datei, die updates diese Datei täglich - das einzige Problem, das ich habe laufen in ist, dass Sie Ihr eigenes Zertifikat (https://...) und ich kann nicht verwenden, bestimmte URL noch ein http://... - link zur Verfügung.
URL url = new URL("https://...");
...
Document document = db.parse(url.openStream());
Dieser code löst die folgende Ausnahme während der Ausführung meiner tests:
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.Sicherheit.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Ich habe gesehen, eine Vielzahl von Anregungen im Umgang mit dem erstellen von verschiedenen Klassen, die sich mit dieser Art von Verbindung oder mit einem personal server, sowie hinzufügen das Zertifikat in einen Schlüsselspeicher und dann hinzufügen, dass keystore der Java-Projekt, aber ich habe nicht in der Lage, das zu tun, und bin auf der Suche nach einen etwas einfacheren Weg für mich zu gehen, über den Zugriff auf die XML-online.
- Es sieht aus wie Sie geändert haben Ihren truststore-Einstellungen nicht auf die Standardwerte verwenden. Was haben Sie verändert?
- Dies hatte den Effekt, das entfernen der Standard trust store, damit hast du eine leere trustAnchors parameter. Es muss immer eine nicht-leere truststore.
- Finden Sie diese Beantworten[1] kurz, der keystore nicht gefunden werden kann. [1]: stackoverflow.com/a/6788682/207131
- Mögliche Duplikate von Fehler - trustAnchors parameter darf nicht leer sein
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benötigen Sie einen truststore zum speichern von SSL-Zertifikaten. Können Sie das Zertifikat herunterladen, mit Ihrem bevorzugten web-browser. Laden Sie das Zertifikat in der truststore -, benötigen Sie das "keytool" - Programm, das kommt mit dem JDK.
Zum Beispiel, wenn Ihre Zertifikat-Datei mit der Bezeichnung "Zertifikat.crt" und Sie möchten, erstellen Sie eine truststore mit dem Namen "sichern.ts", die Sie aufrufen können keytool wie folgt:
Nun, Sie müssen sagen, Ihr Programm, mit dem der keystore und das Passwort, um es zu öffnen, definieren die system-Eigenschaften "javax.net.ssl.trustStore" und "javax.net.ssl.trustStorePassword" vor öffnen der Verbindung
Diese merkwürdige Meldung bedeutet, dass die truststore wurde nicht gefunden.
Überhaupt nichts zu tun mit XML BTW.
UnknownHostException
: ich bin mir nicht sicher, warum würden Sie entfernen Sie diehttps://
vor dem link.NumberFormatException
: dies kann zu tun haben mit der Verarbeitung Ihrer XML-Dokument an einem bestimmten Punkt. Das sollte wahrscheinlich behandelt werden, eine andere Frage, da hat es nichts zu tun mit SSL nun.Können Sie mit dieser versuchen:
Lief ich in die gleiche Ausnahme für meinen MAC OSX (Yosemite), während die Entwicklung von Java-6-Anwendungen. Sie benötigen zum herunterladen und installieren von Apple ' s Java für OSX 2014:
http://support.apple.com/kb/DL1572