Cómo generar archivos .key y .crt a partir del archivo JKS para el servidor httpd apache

19

Solo tengo el archivo mycert.jks . Ahora necesito extraer y generar archivos .key y .crt y usarlos en el servidor httpd de apache.

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

¿Alguien puede enumerar todos los pasos para hacer esto? Busqué pero no hay un ejemplo concreto para entender, pasos combinados y combinados.

¡Por favor recomiende!

[EDITAR] Obteniendo error después de seguir los pasos de la respuesta a continuación.

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
fuente

Respuestas:

29

.jks es un almacén de claves, que es una cosa de Java

use keytool binary de Java.

exportar el .crt :

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

convierta el certificado a PEM :

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

exportar la clave :

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

clave PKCS12 del concierto para PEM sin cifrar :

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

créditos:

exeral
fuente
No funciona, obteniendo error
Sohan
El certificado exportado es el formato DER. agregó un paso para convertirlo a PEM
exeral
thnx, que puede trabajar i no probado todavía, aunque
Sohan
keytool -exportcert -rfcescribe en formato PEM y no necesita conversión. Alternativamente, una vez que tenga el p12, openssl pkcs12 -nokeysescribe toda la cadena de certificados en PEM, que generalmente es mejor para un servidor que usa OpenSSL (como httpd) si este certificado es de una CA real en lugar del certificado autofirmado keytool-default.
dave_thompson_085
1
nota: el alias puede ser el nombre del certificado, si sabe cuál era el nombre cuando se exportó. Quería mencionar que en caso de que las personas estuvieran luchando para ejecutar el primer comando.
GM Lucid
19

Esto es lo que hago

Primero exporta la clave:

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

Para el archivo de certificado apache ssl solo necesita certificado:

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

Para el archivo de clave ssl solo necesita claves:

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

Sohan
fuente
0

Respuesta encontrada aquí:

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

Se muestra cómo crear crt desde el archivo jks keystore en Chrome en Windows:

  • vaya a la url en el navegador que usa jks con la línea roja y habrá un símbolo de bloqueo a la izquierda

  • haciendo clic en la parte no segura, se abre el cuadro de diálogo de información

  • haga clic en el certificado (no válido) y cuando se abra, haga clic en Detalles

  • presione copiar para archivar ... y siga las instrucciones

Al final tienes el archivo de almacén de claves en crt

Zeghra
fuente