Comment générer un fichier .key et .crt à partir d'un fichier JKS pour le serveur Apache httpd


19

Je n'ai que le fichier mycert.jks . Maintenant, j'ai besoin d'extraire et de générer des fichiers .key et .crt et de les utiliser dans le serveur apache httpd.

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

Quelqu'un peut-il énumérer toutes les étapes pour y parvenir? J'ai cherché mais il n'y a pas d'exemple concret pour comprendre, des étapes mixtes et appariées.

Veuillez suggérer!

[MODIFIER] Obtenir une erreur après avoir suivi les étapes de la réponse ci-dessous.

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 

Réponses:


29

.jks est un magasin de clés, qui est une chose Java

utilisez le binaire keytool de Java.

exporter le .crt :

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

convertir le cert en PEM :

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

exporter la clé :

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

clé PKCS12 de concert pour PEM non chiffré :

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

crédits:


Ne fonctionne pas, erreur
Sohan

le certificat exporté est au format DER. a ajouté une étape pour le convertir en PEM
exeral

thnx, ça peut marcher je n'ai pas encore essayé
Sohan

keytool -exportcert -rfcécrit au format PEM et n'a pas besoin de conversion. Alternativement, une fois que vous avez le p12, openssl pkcs12 -nokeysécrit toute la chaîne de certificats dans PEM, ce qui est généralement préférable pour un serveur utilisant OpenSSL (comme httpd) si ce certificat provient d'une véritable autorité de certification plutôt que le certificat auto-signé par défaut keytool.
dave_thompson_085

1
remarque: l'alias peut être le nom du certificat, si vous savez quel était le nom lors de son exportation. Je voulais mentionner qu'au cas où les gens auraient du mal à exécuter la première commande.
GM Lucid

19

Voici ce que je fais,

Exportez d'abord la clé:

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

Pour le fichier de certificat apache ssl, vous avez uniquement besoin d'un certificat:

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

Pour le fichier de clés SSL, vous n'avez besoin que de clés:

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


0

Réponse trouvée ici:

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

Il a montré comment créer crt à partir d'un fichier de magasin de clés jks dans Chrome sur Windows:

  • allez à l'url dans le navigateur qui utilise jks avec la ligne rouge et il y aura un symbole de verrouillage à gauche

  • en cliquant sur la partie non sécurisée, la boîte de dialogue d'information s'ouvre

  • cliquez sur le certificat (invalide) et quand il s'ouvre cliquez sur Détails

  • appuyez sur la copie pour classer ... et suivez les instructions

À la fin, vous avez un fichier de clés dans crt

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.