Extraia a chave do armazenamento de chaves JKS para usar com apache2 e tomcat

3

Eu tenho um keystore no formato JKS e quero usá-lo com o apache2. Como posso exportar a chave e os certificados (que já encadeei) para fora do JKS de maneira fácil? Eu encontrei muitas respostas lá fora, mas parece que ninguém tem o meu problema ... (ou a resposta é parcial)

Obrigado pelo seu tempo.

    
por CappyT 25.06.2014 / 01:23

3 respostas

7

O JKS tem certificados no DER e para o Apache você quer ter o formato PEM (AKA X509).

Exemplo de como fazer isso:

$JAVA_HOME/bin/keytool --list -keystore <mykeystore>
$JAVA_HOME/bin/keytool -export -rfc -alias <alias_name> -file <cert.crt> -keystore <mykeystore>

Então, você desejará exportar a chave privada e depois os certificados.

A chave privada exportada localizada entra na diretiva SSLCertificateKeyFile no httpd.conf e você pode colocar os certificados encadeados na diretiva SSLCertificateChainFile. Isso é uma adição à diretiva SSLCertificateFile.

Veja o link

    
por 25.06.2014 / 01:53
1

Não há como "diretamente" exportar nada que não seja o certificado. Você precisará passar por uma etapa intermediária em um formato PKCS12.

keytool -importkeystore -srckeystore rec.jks -destkeystore rec.p12 -deststoretype PKCS12

Isso solicitará senhas de origem e destino. Se você precisar automatizar isso, use PW=somepass keytool -srcpass:env PW ... ou keytool -srcstorepass:file filecontainingpass ... e, da mesma forma, use -deststorepass

E a partir daí, você pode usar o openssl para converter o arquivo PKCS12 para o PEM padrão:

openssl pkcs12 -in rec.p12 -out rec.pem

Isso também solicitará senhas. Use as opções -passin env:PW ou -passin file:filename e -passout , ou -nodes se você não quiser que a chave resultante seja criptografada, mas tenha cuidado com o local para o qual está escrevendo.

O arquivo resultante conterá sua chave, certificado e provavelmente a cadeia completa de certificados.

    
por 04.08.2016 / 19:56
0

Você não pode obter a chave privada diretamente do JKS usando keytool; em vez disso, você deve primeiro converter para o formato PKCS12 e, em seguida, usar o comando openssl. Eu fiz este trabalho:

  1. Use o keytool para converter o armazenamento de chaves em um pkcs12

    keytool -importkeystore -srckeystore jks_filename.jks -destkeystore p12_filename.p12 -deststoretype PKCS12

  2. Use o openssl para exportar o certificado como um arquivo .pem:

    openssl pkcs12 -in p12_filename.p12 -nokeys -clcerts -out cert_filename.pem

  3. Use openssl para exportar a chave privada correspondente como um arquivo .pem:

    openssl pkcs12 -in p12_filename.p12 -nocerts -out key_filename.pem

  4. Atualize o arquivo ssl.conf em dois locais (SSLCertificateFile e SSLCertificateKeyFile) para configurar a porta 443 para usar esses arquivos de certificados e chaves.

por 10.01.2018 / 15:50