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.

1voto

piotrek Punkte 12944

Auf ubuntu 14.04 mit openjdk 11 von ppa:openjdk-r/ppa hat das bei mir funktioniert:

in java.security den Typ des Schlüsselspeichers ändern in

keystore.type=jks

dann:

sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java

Wenn Sie überprüfen, ob es funktioniert hat, stellen Sie sicher, dass Sie keinen Daemon mit altem Java verwenden (z. B. --no-daemon Option für gradle)

Dieser Fehler beschreibt alles sehr gut und wird Ihnen helfen, zu verstehen, was vor sich geht https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631

1voto

Julius Punkte 2744

Ich habe noch einen anderen Grund für diesen Fehler gefunden, der nicht mit Ubuntu zusammenhängt.

Ich habe versucht, gegenseitiges TLS in einer Spring Boot 2-App einzurichten und bin auf dieses Problem gestoßen, nachdem ich einen Truststore verwendet hatte, der nur einen Eintrag für den privaten Schlüssel und keinen Eintrag für ein vertrauenswürdiges Zertifikat enthielt.

Dies ist meine Spring Boot TLS-Konfiguration

server.port=8443
server.ssl.key-alias=oba-tls
server.ssl.key-password=mypw
server.ssl.key-store-password=mypw
server.ssl.key-store=classpath:keys/tls-keystore.pfx
server.ssl.key-store-type=PKCS12
server.ssl.enabled=true
server.ssl.client-auth=need

server.ssl.trust-store=classpath:keys/truststore.pfx
server.ssl.trust-store-password=mypw
server.ssl.trust-store-type=PKCS12
server.ssl.ciphers=ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA384
server.ssl.protocol=TLS
server.ssl.enabled-protocols=TLSv1.2

Um truststore.pfx zu erstellen, musste ich die folgenden Befehle verwenden, damit es funktioniert.

openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -out cert.crt

keytool -importcert -alias oba-trust -file cert.crt -keystore truststore.jks

keytool -importkeystore -srckeystore truststore.jks -destkeystore truststore.pfx -srcstoretype JKS - deststoretype PKCS12 -deststorepass yourpassword

1voto

NELSON RODRIGUEZ Punkte 169

Ich lief

sudo update-ca-certificates -f

um eine Zertifikatsdatei zu erstellen, und dann:

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

und ändern Sie dann die Befehlszeile der jar-Ausführung:

sudo java -cp xx.jar:lib/* co.com.ixxx.clixxxlarxa.Main

1voto

shw Punkte 624

Keine der Lösungen, die ich im Internet fand, funktionierte, aber eine modifizierte Version von Die Antwort von Peter Kriens scheint die Aufgabe zu erfüllen.

Suchen Sie zunächst Ihren Java-Ordner, indem Sie /usr/libexec/java_home . Für mich war es die 1.6.0.jdk Version. Gehen Sie dann zu seiner lib/security Unterordner (bei mir /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security ).

Löschen Sie dann die cacerts Datei, wenn es bereits eine gibt, und suchen Sie auf dem System nach einer Datei mit sudo find / -name "cacerts" . Es fand mehrere Elemente für mich, in Versionen von Xcode oder anderen Anwendungen, die ich installiert hatte, aber auch bei /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts die ich gewählt habe.

Verwenden Sie diese Datei und erstellen Sie einen symbolischen Link zu ihr (innerhalb des Java-Ordners von vorher), sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts" und es sollte funktionieren.

Ich habe beides - Java von Apples 2017-001 Download ( https://support.apple.com/kb/dl1572 - Ich nehme an, dass die richtigen Zertifikate von dort stammen) und das von Oracle, das auf Mac OS X v10.12 (Sierra).

1voto

DPKGRG Punkte 65

Ich stand vor diesem Problem, als ich eine bestimmte Android-Suite zum Testen auf Ubuntu 14.04 (Trusty Tahr). Zwei Dinge haben bei mir funktioniert, wie von Shaheen vorgeschlagen:

sudo update-ca-certificates -f

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

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