Manutenção em Java Key Stores (JKS) usando o Keytool
4, julho 2012 1 Comentário
Manutenção de Kestores já existentes
Em certas situações é necessário realizar uma manutenção em um keystore já existente no servidor. A manutenção pode ser motivada pela necessidade de importar/exportar uma chave/certitificado de outro ambiente no keystore em questão.
Segue abaixo alguns comandos úteis da ferramenta keytool (fornecida pelo JDK da Sun/Oracle)
Listar o conteúdo de um keystore
Antes de qualquer manutenção no keystore é interessante listar o seu conteúdo.
- O comando abaixo lista todos os certificados armazenados no keystore (JKS) informado.
keytool -list -keystore server_keystore.jks
A saída do comando deve ser semelhante a apresentada pela listagem abaixo:
***************** WARNING WARNING WARNING ***************** * The integrity of the information stored in your keystore * * has NOT been verified! In order to verify its integrity, * * you must provide your keystore password. * ***************** WARNING WARNING WARNING ***************** Keystore type: JKS Keystore provider: SUN Your keystore contains 4 entries server1.domain.com, Mar 26, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): A7:8B:B7:9A:11:50:CC:98:4C:B5:89:BA:04:3B:CD:AD server2.domain.com, Mar 26, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): 2F:A2:50:65:C9:B2:2B:16:C0:2E:10:8A:8C:AB:50:E0 server3.domain.com, Mar 26, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): 98:CC:AF:88:82:85:07:9A:23:FA:3C:FB:AD:1C:14:62 server4.domain.com, Mar 26, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): 84:57:8C:40:03:12:F1:56:0B:89:9D:1E:20:E6:48:B5
Exportar um certificado específico
- No exemplo abaixo o certificado (identificado pelo alias server3.domain.com) armazenado no keystore server_keystore.jks será exportado para o arquivo server3.cer
keytool -export -alias server3.domain.com -keystore server_keystore.jks -file server3.cer
Importar um certificado específico
De posse do certificado exportado no passo anterior basta usar o comando keytool –import para importá-lo em um keystore (JKS) diferente.
- No exemplo abaixo o certificado (identificado pelo alias server1.domain.com) armazenado no arquivo server1.cer será importado dentro do keystore client_keystore.jks
keytool -import -alias server1.domain.com -file server1.cer -keystore client_keystore.jks
Clonar um certificado específico
Caso seja necessário clonar uma determinada chave/certificado armazenado no keystore basta utilizar o comando keytool -keyclone.
- No exemplo abaixo o certificado identificado pelo alias server3.domain.com será clonado com um novo alias (clone_server3.domain.com) dentro do keystore server_keystore.jks
keytool -keyclone -alias server3.domain.com -dest clone_server3 -keystore server_keystore.jks
obs:
1) você será questionado quanto a senha que deseja definir para a chave clonada. Caso queira manter a senha da chave original (clonada) confirme com ‘<Enter>’.
2) a opção ‘-keyclone’ funciona apenas para certificados contendo o par de chaves pública/privada. Não é possível clonar (duplciar) chaves públicas.
Excluir um certificado específico
Caso seja necessário excluir uma determinada chave/certificado armazenado no keystore basta utilizar o comando keytool -delete.
- No exemplo abaixo o certificado identificado pelo alias server1.domain.com será excluído do keystore server_keystore.jks
keytool -delete -alias server1.domain.com -keystore server_keystore.jks
Renomear (altear o alias) um certificado específico
Caso seja necessário renomear (alterar o alias) uma determinada chave/certificado armazenado no keystore basta utilizar o comando keytool -changealias.
- No exemplo abaixo o certificado identificado pelo alias server1.domain.com será renomeado para o alias serverX no keystore server_keystore.jks
keytool -changealias -alias server1.domain.com -destalias serverX.domain.com -keystore server_keystore.jks
- para mais detalhes sobre a ferramenta keytool consulte a documentação oficial do JDK disponível em [1]
valu mano ajudou muito