Как автоматизировать создание хранилища ключей с помощью инструмента хранилища ключей Java? без взаимодействия с пользователем

91

Я пытаюсь автоматизировать создание хранилища ключей с помощью инструмента хранилища ключей Java. Я использую следующую команду:

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

Но после этой команды пользователь должен ввести определенные данные следующим образом:

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  

Вместо того, чтобы пользователь вводил эти значения, есть ли способ предоставить эти значения без взаимодействия с пользователем, внутри команды или с помощью сценария?

Благодарность

r3ap3r
источник
почему вы не читаете эту информацию из файла свойств?
Shamis Shukoor
Есть и другие параметры командной строки - прочтите docs.oracle.com/javase/7/docs/technotes/tools/windows/… (включая выдающееся имя)
Jayan
7
Тот факт, что в примере использовался локальный адрес, не означает, что проблема локализована. Я из Великобритании, и у меня возник тот же вопрос. К счастью, поскольку некоторые ответили на вопрос до того, как он был закрыт, это просто сэкономило мне массу времени, пытаясь найти ответ.
Trevor North
7
Этот вопрос был очень полезным, и ответ помог. Не понимаю, почему его закрыли.
Хосе Мартинес
2
Еще один пример довольных модераторов SO, готовых бросить вызов в любой момент при закрытии актуальных, актуальных и полезных вопросов, чтобы они могли проявить небольшую силу, которая у них есть, чтобы почувствовать себя важными. Это был первый результат, когда я искал этот вопрос в Google, и он помог мне решить мою проблему, невероятно, что она была закрыта просто потому, что в вопросе была ссылка на локаль спрашивающего.
Fam

Ответы:

165

Попробуй это:

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
Евгений Дорофеев
источник
1
есть ли способ указать пароль исходного хранилища ключей при импорте хранилища ключей .p12 в .jks?
Эрик Каплун
3
@ErikAllikkeytool -importkeystore [...] -srcstorepass password_here
Гийом Будро
10

не забудьте -noprompt, иначе вам будет предложено ввести Да или Нет

звезда
источник
1
если у кого-то была та же проблема, что и при использовании этого параметра: есть некоторые команды с -srckeypass и -srcstorepass. Вы можете легко смешать их
Benez