Como automatizar a geração de keystore usando a ferramenta java keystore? sem interação do usuário

90

Estou tentando automatizar a geração de armazenamento de chaves usando a ferramenta de armazenamento de chaves Java. O comando que estou usando é:

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

Mas após este comando, o usuário deve inserir certas entradas da seguinte forma:

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  

Em vez de o usuário inserir esses valores, há alguma maneira de fornecer esses valores sem a interação do usuário, seja no comando ou por meio de um script?

obrigado

r3ap3r
fonte
por que você não lê essas informações em um arquivo de propriedade?
Shamis Shukoor
Há mais opções de linha de comando - leia docs.oracle.com/javase/7/docs/technotes/tools/windows/… (incluindo nome distinto)
Jayan
7
Só porque o exemplo usou um endereço local, não significa que o problema foi localizado. Eu sou um Reino Unido e tinha a mesma pergunta. Felizmente, como alguns responderam à pergunta antes de ela ser fechada, isso apenas me economizou muito tempo tentando encontrar a resposta.
Trevor North
7
Essa pergunta foi muito útil e a resposta ajudou. Não entendo porque foi fechado.
Jose Martinez,
2
Mais um exemplo de moderadores de SO prontos para disparar a qualquer momento ao encerrar questões reais, relevantes e úteis, para que possam exercer o pequeno poder de que dispõem para se sentirem importantes. Este foi o primeiro resultado quando eu pesquisei essa questão no Google e me ajudou a resolver meu problema, inacreditável que foi fechado simplesmente porque referenciou a localidade do autor da pergunta na questão.
Fam

Respostas:

163

Experimente isto:

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
fonte
1
existe uma maneira de especificar a senha do keystore de origem ao importar um keystore .p12 para um .jks?
Erik Kaplun,
3
@ErikAllikkeytool -importkeystore [...] -srcstorepass password_here
Guillaume Boudreau
10

não se esqueça de -noprompt, caso contrário, você será solicitado a inserir Sim ou Não

Estrela
fonte
1
se outra pessoa teve o mesmo problema que houve um prompt mesmo com esta opção: existem alguns comandos que têm -srckeypass e -srcstorepass. você pode misturá-los facilmente
benez
5

Veja a documentação completa sobre linha de comando ou digitando keytoolsem argumentos.

Especificamente, você pode querer olhar as opções -storepass password -keypass password

Jayan
fonte
A palavra-chave -dname também é necessária
fredericrous