Wie automatisiere ich die Keystore-Generierung mit dem Java-Keystore-Tool? ohne Benutzerinteraktion

90

Ich versuche, die Keystore-Generierung mit dem Java-Keystore-Tool zu automatisieren. Der Befehl, den ich benutze, ist:

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

Nach diesem Befehl muss der Benutzer jedoch bestimmte Eingaben wie folgt eingeben:

Enter keystore password:  password
What is your first and last name?  
[Unknown]:  jetty.mortbay.org  
What is the name of your organizational unit?  
[Unknown]:  Jetty  
What is the name of your organization?  
[Unknown]:  Mort Bay Consulting Pty. Ltd.  
What is the name of your City or Locality?  
[Unknown]:  
What is the name of your State or Province?  
[Unknown]:  
What is the two-letter country code for this unit?  
[Unknown]:  
Is CN=jetty.mortbay.org, OU=Jetty, O=Mort Bay Consulting Pty. Ltd.,  
L=Unknown, ST=Unknown, C=Unknown correct?  
[no]:  yes  

Enter key password for <jetty>  
(RETURN if same as keystore password):  password  

Gibt es eine Möglichkeit, diese Werte ohne Benutzereingriff bereitzustellen, anstatt dass der Benutzer diese Werte eingibt, entweder innerhalb des Befehls oder über ein Skript?

Vielen Dank

r3ap3r
quelle
Warum lesen Sie diese Informationen nicht aus einer Eigenschaftendatei?
Shamis Shukoor
Es gibt mehr Befehlszeilenoptionen - lesen Sie docs.oracle.com/javase/7/docs/technotes/tools/windows/… (einschließlich des definierten Namens)
Jayan
7
Nur weil im Beispiel eine lokale Adresse verwendet wurde, bedeutet dies nicht, dass dieses Problem lokalisiert ist. Ich bin un UK und hatte gerade die gleiche Frage. Glücklicherweise, weil einige die Frage beantwortet haben, bevor sie geschlossen wurde, hat es mir nur eine Menge Zeit gespart, die Antwort herauszufinden.
Trevor North
7
Diese Frage war sehr nützlich und die Antwort hat geholfen. Verstehe nicht, warum es geschlossen wurde.
Jose Martinez
2
Ein weiteres Beispiel für auslösende glückliche SO-Moderatoren, die bereit sind, sofort die Waffe zu springen, wenn sie aktuelle, relevante und nützliche Fragen schließen, damit sie die geringe Menge an Kraft ausüben können, die sie benötigen, um sich wichtig zu fühlen. Dies war das erste Ergebnis, als ich diese Frage bei Google durchsuchte, und es half mir, mein Problem zu lösen. Unglaublich, dass sie geschlossen wurde, nur weil sie in der Frage auf das Gebietsschema des Fragestellers verwies.
Fam

Antworten:

163

Versuche dies:

keytool -genkey -noprompt \
 -alias alias1 \
 -dname "CN=mqttserver.ibm.com, OU=ID, O=IBM, L=Hursley, S=Hants, C=GB" \
 -keystore keystore \
 -storepass password \
 -keypass password
Evgeniy Dorofeev
quelle
1
Gibt es eine Möglichkeit, das Kennwort des Quell-Keystores anzugeben, wenn ein .p12-Keystore in ein .jks importiert wird?
Erik Kaplun
3
@ErikAllikkeytool -importkeystore [...] -srcstorepass password_here
Guillaume Boudreau
10

Vergessen Sie nicht -noprompt, sonst werden Sie aufgefordert, Ja oder Nein einzugeben

Star
quelle
1
Wenn jemand anderes das gleiche Problem hatte, dass es auch mit dieser Option eine Eingabeaufforderung gab: Es gibt einige Befehle mit -srckeypass und -srcstorepass. Sie können sie leicht mischen
benez
5

Lesen Sie die vollständige Dokumentation zur Befehlszeile oder geben Sie keytoolohne Argumente ein.

Insbesondere möchten Sie möglicherweise Optionen suchen -storepass password -keypass password

Jayan
quelle
-dname Schlüsselwort wird auch benötigt
fredericrous