612 Stimmen

Fehler - trustAnchors-Parameter darf nicht leer sein

Ich versuche, meine E-Mail auf Jenkins/Hudson zu konfigurieren, und erhalte ständig die Fehlermeldung:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
    non-empty

Ich habe im Internet zahlreiche Informationen über diesen Fehler gefunden, aber ich habe keine davon gefunden. Ich verwende das JDK von Sun auf Fedora Linux (nicht OpenJDK).

Hier sind ein paar Dinge, die ich ausprobiert habe. Ich habe versucht, den Rat aus diesem Beitrag , aber das Kopieren der Cacerts von Windows auf meine Fedora-Box, die Jenkins hostet, hat nicht funktioniert. Ich habe Folgendes versucht dieser Leitfaden da ich versuche, Gmail als meinen SMTP-Server zu konfigurieren, aber auch das hat nicht funktioniert. Ich habe auch versucht, die cacert-Dateien manuell herunterzuladen und in meinen Java-Ordner zu verschieben, indem ich eine Variation der Befehle auf dieser Leitfaden .

Ich bin für jeden Vorschlag offen, da ich im Moment nicht weiterkomme. Ich habe es von einem Windows-Hudson-Server aus zum Laufen gebracht, aber unter Linux habe ich Schwierigkeiten.

53voto

Peter Kriens Punkte 14774

Ich bin auf diese Lösung aus einem Blogbeitrag gestoßen Behebung des trustAnchors-Problems beim Betrieb von OpenJDK 7 unter OS X :

Behebung des trustAnchors-Problems beim Betrieb von OpenJDK 7 unter OS X. Wenn Sie OpenJDK 7 unter OS X betreiben und diese Ausnahme gesehen haben:

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors
    parameter must be non-empty

Dafür gibt es eine einfache Lösung. Binden Sie einfach die gleiche cacerts-Datei ein, die Apples JDK 1.6 verwendet:

cd $(/usr/libexec/java_home -v 1.7)/jre/lib/security
ln -fsh /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts

Sie müssen dies für jede OpenJDK-Version tun, die Sie installiert haben. Ändern Sie einfach -v 1.7 auf die Version, die Sie korrigieren möchten. Führen Sie aus. /usr/libexec/java_home -V um alle JREs und JDKs zu sehen, die Sie installiert haben.

Vielleicht könnten die OpenJDK-Leute dies in ihre Installationsskripte aufnehmen.

48voto

yvesr Punkte 481

Unter Ubuntu 12.10 (Quantal Quetzal) oder später, werden die Zertifikate im ca-zertifikate-java Paket. Verwendung von -Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts werden sie unabhängig vom verwendeten JDK erkannt.

35voto

KiwiMartin Punkte 793

Ich hatte genau dieses Problem unter OS X, mit JDK 1.7, nachdem ich ein Upgrade auf OS X v10.9 (Mavericks). Die Lösung, die bei mir funktionierte, bestand darin, einfach die Apple-Version von Java neu zu installieren, verfügbar unter http://support.apple.com/kb/DL1572 .

30voto

razvanone Punkte 1211

Die Fehlermeldung besagt, dass das System den Truststore nicht in dem Pfad finden kann, der mit dem Parameter javax.net.ssl.trustStore .

Unter Windows habe ich die cacerts Datei von jre/lib/security in das Eclipse-Installationsverzeichnis (am selben Ort wie die eclipse.ini Datei) und fügte die folgenden Einstellungen in eclipse.ini :

-Djavax.net.ssl.trustStore=cacerts
-Djavax.net.ssl.trustStorePassword=changeit
-Djavax.net.ssl.trustStoreType=JKS

Ich hatte einige Probleme mit dem Pfad zu den Cacerts (die Umgebungsvariable %java_home% wird irgendwie überschrieben), daher habe ich diese triviale Lösung verwendet.

Die Idee ist, einen gültigen Pfad zur Truststore-Datei anzugeben - idealerweise einen relativen Pfad. Sie können auch einen absoluten Pfad verwenden.

Um sicherzustellen, dass der Speichertyp JKS ist, führen Sie den folgenden Befehl aus:

keytool -list -keystore cacerts

Keystore type: JKS
Keystore provider: SUN

Hinweis : Da Zertifikate ein Verfallsdatum haben oder aus anderen Gründen ungültig werden können, sollten Sie von Zeit zu Zeit überprüfen, ob die Zertifikate in cacerts sind nach wie vor gültig. Die gültigen Versionen der Zertifikate finden Sie normalerweise in den neuesten Builds von jdk.

29voto

Johnny Punkte 401

Ich lief

sudo update-ca-certificates -f

um eine Zertifikatsdatei zu erstellen, und dann:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Ich war wieder im Geschäft, danke Jungs. Es ist schade, dass es nicht in der Installation enthalten ist, aber ich habe es am Ende geschafft.

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