Como gerar o arquivo .key e .crt do arquivo JKS para o servidor httpd apache

19

Eu tenho apenas o arquivo mycert.jks . Agora eu preciso extrair e gerar arquivos .key e .crt e usá-lo no servidor httpd apache.

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 

Alguém pode listar todas as etapas para fazer isso. Eu procurei, mas não há exemplo concreto para entender, etapas mistas e correspondentes.

Por favor sugira!

[EDIT] Obtendo erro após seguir as etapas abaixo da resposta.

8/‎21/‎2015 9:07 PM] Sohan Bafna: 
    [Fri Aug 21 15:32:03.008511 2015] [ssl:emerg] [pid 14:tid 140151694997376] AH02562: Failed to configure certificate 0.0.0.0:4545:0 (with chain), check /home/certs/smp_c
    ert_key_store.crt
    [Fri Aug 21 15:32:03.008913 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: TRUSTED
     CERTIFICATE) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
    [Fri Aug 21 15:32:03.008959 2015] [ssl:emerg] [pid 14:tid 140151694997376] SSL Library Error: error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib 
Sohan
fonte

Respostas:

29

.jks é um keystore, que é uma coisa do Java

use o binário keytool do Java.

exporte o .crt :

keytool -export -alias mydomain -file mydomain.der -keystore mycert.jks

converta o certificado em PEM :

openssl x509 -inform der -in mydomain.der -out certificate.pem

exporte a chave :

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12

chave PKCS12 do concerto para o PEM não criptografado :

openssl pkcs12 -in keystore.p12  -nodes -nocerts -out mydomain.key

créditos:

exeral
fonte
Não trabalhando, recebendo erro
Sohan
certificado exportado é o formato DER. adicionou uma etapa para convertê-lo em PEM
exeral 21/08/2015
thnx, que pode funcionar eu não tentei ainda though
Sohan
keytool -exportcert -rfcescreve no formato PEM e não precisa de conversão. Como alternativa, depois de ter o p12, openssl pkcs12 -nokeysgrava toda a cadeia de certificados no PEM, o que geralmente é melhor para um servidor usando OpenSSL (como httpd) se esse certificado for de uma CA real e não o certificado autoassinado padrão de keytool.
David_thompson_085
11
Nota: O Alias ​​pode ser o nome do certificado, se você souber qual era o nome quando foi exportado. Queria mencionar que, caso as pessoas estivessem lutando para executar o primeiro comando.
GM Lucid
19

Aqui está o que eu faço,

Primeiro exporte a chave:

keytool -importkeystore -srckeystore mycert.jks -destkeystore keystore.p12 -deststoretype PKCS12

Para o arquivo de certificado SSL do apache, você precisa apenas de certificado:

openssl pkcs12 -in keystore.p12 -nokeys -out my_key_store.crt

Para o arquivo de chave ssl, você precisa apenas de chaves:

openssl pkcs12 -in keystore.p12 -nocerts -nodes -out my_store.key

Sohan
fonte
0

Resposta encontrada aqui:

/programming/7580508/getting-chrome-to-accept-self-signed-localhost-certificate?page=2&tab=Votes

Ele mostrou como criar crt a partir do arquivo jks keystore no Chrome no Windows:

  • vá para a URL no navegador que usa jks com a linha vermelha e haverá um símbolo de cadeado à esquerda

  • clicando na parte não segura, a caixa de diálogo de informações é aberta

  • clique no certificado (inválido) e, quando abrir, clique em Detalhes

  • pressione copiar para arquivar ... e siga as instruções

No final, você tem o arquivo keystore em crt

Zeghra
fonte