Importar chave privada e certificado para o armazenamento de chaves java

De vez em quando, você deve atualizar suas chaves e certificados SSL. Em alguns casos, você pode ter uma infraestrutura mista, por exemplo, servidores http “normais” e tomcat ou outros servidores baseados em java. No último caso, você terá que importar seu novo certificado e chave para o seu armazenamento de chaves java.

Existem vários métodos que você pode usar, mas eu achei o seguinte o mais simples:

  1. Exporte sua chave, certificado e certificado ca para um pacote PKCS12 via
% openssl pkcs12 -export -in my.crt -inkey my.key -chain -CAfile my-ca-file.crt -name "my-domain.com" -out my.p12
  1. Certifique-se de definir uma senha de exportação! (veja mais abaixo para uma explicação)
  2. Se você receber a seguinte mensagem de erro “Erro não foi possível obter a cadeia de obtenção do certificado do emissor.” então você deve concatenar os ca-certs openssl com seu próprio ca-cert em um arquivo e usá-lo como parâmetro para -CAfile. Exemplo:
% cat /etc/ssl/cert.pem my-ca-file.crt > ca-certs.pem
% openssl pkcs12 -export -in my.crt -inkey my.key -chain -CAfile ca-certs.pem -name "my-domain.com" -out my.p12
  1. Importe o arquivo PKCS12 para um novo armazenamento de chaves java via
% keytool -importkeystore -deststorepass MY-KEYSTORE-PASS -destkeystore my-keystore.jks -srckeystore my.p12 -srcstoretype PKCS12

Atenção!

Se você não definir uma senha de exportação na primeira etapa, a importação via keytoolprovavelmente sairá com um NullPointerException.