Ich muss ein Zertifikat in meinen JVM-Keystore importieren. Ich benutze folgendes:
keytool -import -alias daldap -file somecert.cer
Also müsste ich wahrscheinlich meinen Anruf in etwas ändern wie:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
Antworten:
Ihr Keystore befindet sich in Ihrem
JAVA_HOME---> JRE -->lib---> security--> cacerts
. Sie müssen überprüfen, wo Ihr JAVA_HOME konfiguriert ist, möglicherweise an einem dieser Orte.Computer ---> Erweitert -> Umgebungsvariablen ---> JAVA_HOME
Ihre Server-Start-Batch-Dateien.
In Ihrem Importbefehl -keystore cacerts (geben Sie hier den vollständigen Pfad zur obigen JRE an, anstatt nur cacerts zu sagen).
quelle
Keystore-Speicherort
Jeder Keytool-Befehl verfügt über eine
-keystore
Option zum Angeben des Namens und des Speicherorts der persistenten Keystore-Datei für den von Keytool verwalteten Keystore. Der Schlüsselspeicher wird standardmäßig in einer Datei gespeichert, die im.keystore
Ausgangsverzeichnis des Benutzers benannt ist, wie durch die Systemeigenschaft "user.home" festgelegt. Bei gegebenem Benutzernamen uName wird standardmäßig der Eigenschaftswert "user.home" verwendetWenn der Benutzername also "cathy" lautet, wird standardmäßig "user.home" verwendet
http://docs.oracle.com/javase/1.5/docs/tooldocs/windows/keytool.html
quelle
~/.keystore
Datei gesucht ! Wenn ich den-keystore
Parameter weglasse, kann ich nicht herausfinden, welches Standard-Keystore-keytool
Targeting verwendet wird. Ich suchtecacerts
irgendwo anders an der Maschine nach anderen . Ich hatte nicht erwartet, dass Keytool~/.keystore
im Home-Verzeichnis generiert oder.keystore
stattdessen benannt wirdcacerts
. Sie haben eine Lücke ausgefüllt, die die Java-Leute dokumentieren sollten! Danke dir!Mac OS X 10.12 mit Java 1.8:
$ JAVA_HOME / jre / lib / security
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
Von dort ist es in:
Ich habe dort einen Cacerts-Keystore.
So geben Sie dies als VM-Option an:
Ich sage nicht, dass dies der richtige Weg ist (Warum weiß Java nicht, wie man in JAVA_HOME schaut?), Aber das musste ich tun, damit es funktioniert.
quelle
Sie finden es in Ihrem "Home" -Verzeichnis:
Unter Windows 7:
Unter Linux (Ubuntu):
quelle
user.home
gleich ist,$HOMEDRIVE$HOMEPATH
die von Windows festgelegt wurde, und nicht$HOME
von Cygwin festgelegt wird, wobeiHOMEDRIVE=C:
undHOMEPATH=\Users\[YOUR ACCOUNT]
Das funktioniert bei mir:
Nur für Linux. Mein Solaris hat keinen Readlink. Am Ende habe ich dieses Perl-Skript verwendet:
quelle
Wie DimtryB erwähnt hat, befindet sich der Keystore standardmäßig im Benutzerverzeichnis. Wenn Sie jedoch versuchen, die
cacerts
Datei zu aktualisieren , damit die JVM die Schlüssel auswählen kann, müssen Sie diecacerts
Datei unter aktualisierenjre/lib/security
. Sie können die Schlüssel auch anzeigen, indem Sie den Befehl ausführen, um festzustellenkeytool -list -keystore cacerts
, ob Ihr Zertifikat hinzugefügt wurde.quelle
lib/security
automatisch den richtigen Pfad hinzufügt, wenn nur der relative Name angegeben wird.-importcert
. Der Befehl list zeigt die systemweiten Zertifikate an, der Befehl import generiert jedoch eine neue Datei im aktuellen Verzeichnis.updatedb; locate cacerts
Hilft bei der Suche nach den Installationsorten der Cacerts-Dateien.Unter Debian habe ich unter Verwendung der openjdk-Version "1.8.0_212" hier Cacerts gefunden:
Sicher wäre es praktisch, wenn es einen Standardbefehl gäbe, der diesen Pfad ausdrucken würde.
quelle
Für mich mit dem offiziellen OpenJDK 12 Docker-Image war der Speicherort des Java-Keystores:
quelle
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
Sie auch den Parameter-keystore
... IMHO ziemlich unklar. Und zu guter Letzt: Ich habe genau nach diesem Problem gesucht - und diese Frage gefunden. Vielleicht erwarten andere dasselbe.Dieses Problem trat bei einem Tomcat auf, der aus einem jre-Verzeichnis ausgeführt wurde, das nach einem automatischen jre-Update (fast vollständig) entfernt wurde, sodass das laufende jre jre ... / lib / security / cacerts nicht mehr finden konnte, da es nicht mehr vorhanden war.
Ein Neustart von Tomcat (nachdem die Konfiguration so geändert wurde, dass sie von einem anderen Speicherort ausgeführt wird) hat das Problem behoben.
quelle
Zusätzlich zu allen obigen Antworten:
Wenn das Aktualisieren der cacerts-Datei im JRE-Verzeichnis nicht hilft, versuchen Sie, sie im JDK zu aktualisieren.
C: \ Programme \ Java \ jdk1.8.0_192 \ jre \ lib \ security
quelle