127 votes

Convertir un fichier de clés de Java au Format PEM

Je suis en train de convertir en Java fichier de magasin de clés dans un fichier PEM à l'aide de keytool et openssl applicactions. Mais je ne pouvais pas trouver un bon moyen de faire la conversion. Une idée?

Au lieu de convertir le fichier de clés dans PEM j'ai essayé de créer un fichier PKCS12 et puis les convertir en fichier PEM et de magasin de clés. Mais je ne pouvais pas établir de connexion à l'aide. (Notez que j'ai juste besoin d'un fichier PEM et un fichier de magasin de clés à mettre en œuvre une connexion sécurisée. Il n'y a pas de restriction comme "Démarrer à partir d'un java fichier de magasin de clés". :) Donc à partir de d'autres formats est acceptable avec mon cas)

Mais la conversion directe de la méthode de jks à pem est plus préféré.

211voto

Stobor Points 15428

C'est assez simple, en utilisant jdk6 au moins...

bash$ keytool -keystore foo.jks -genkeypair -alias toto \
 -dname 'CN=foo.example.com L=Melbourne,ST=Victoria,C=AU'
Entrez le mot de passe du fichier de clés: 
Re-enter new password: 
Entrez la clé de mot de passe pour 
 (De RETOUR si même mot de passe du fichier de clés): 
bash$ keytool -keystore foo.jks -exportcert -alias toto | \
 openssl x509 -informer der -texte
Entrez le mot de passe du fichier de clés: asdasd
Certificat:
Données:
 Version: 3 (0x2)
 Numéro de série: 1237334757 (0x49c03ae5)
 L'Algorithme de Signature: dsaWithSHA1
 Émetteur: C=UA, ST=Victoria, L=Melbourne, CN=foo.example.com
Validité
 Pas Avant: Mar 18 00:05:57 GMT 2009
 Pas Après : Jun 16 00:05:57 GMT 2009
 Sujet: C=UA, ST=Victoria, L=Melbourne, CN=foo.example.com
 Subject Public Key Info:
 Algorithme de Clé publique: dsaEncryption
 Clé Publique DSA:
 pub: 
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2d:b5:2d:f4:34:27:e6:53:c7:


bash$ keytool -importkeystore -srckeystore foo.jks \
 -destkeystore foo.p12 \
 -srcstoretype jks \
 -deststoretype pkcs12
Saisir la destination du fichier de clés mot de passe: 
Re-enter new password: 
Entrez source de magasin de clés, mot de passe: 
Entrée pour alias toto importés avec succès.
La commande d'importation: 1 entrées importées avec succès, 0 entrées manqué ou annulé

bash$ openssl pkcs12-in toto.p12 -out foo.pem
Entrez L'Importation Mot De Passe:
MAC vérifié OK
Enter PEM pass phrase:
Vérification - Enter PEM pass phrase:

bash$ openssl x509 -texte -foo.pem
Certificat:
Données:
 Version: 3 (0x2)
 Numéro de série: 1237334757 (0x49c03ae5)
 L'Algorithme de Signature: dsaWithSHA1
 Émetteur: C=UA, ST=Victoria, L=Melbourne, CN=foo.example.com
Validité
 Pas Avant: Mar 18 00:05:57 GMT 2009
 Pas Après : Jun 16 00:05:57 GMT 2009
 Sujet: C=UA, ST=Victoria, L=Melbourne, CN=foo.example.com
 Subject Public Key Info:
 Algorithme de Clé publique: dsaEncryption
 Clé Publique DSA:
 pub: 
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2d:b5:2d:f4:34:27:e6:53:c7:


bash$ openssl dsa-texte -foo.pem
lire la clé DSA
Enter PEM pass phrase:
Clé privée: (1024 bits)
priv:
00:8f:b1:af:55:63:92:7c:d2:0f:e6:f3:a2:f5:ff:
1a:7a:fe:8c:39:dd
pub: 
00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14:
7e:a6:2e:5a:45:f9:2d:b5:2d:f4:34:27:e6:53:c7:



Vous vous retrouvez avec:

  • foo.jks - keystore java au format.
  • foo.p12 - keystore au format PKCS#12.
  • foo.pem - toutes les clés et les certificats de fichier de clés, au format PEM.

(Ce dernier fichier peut être divisé en de clés et de certificats si vous le souhaitez).


Résumé des commandes - créer JKS keystore:

keytool -keystore foo.jks -genkeypair -alias foo \
    -dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'

Résumé de commande - pour convertir JKS fichier de clés dans le fichier PKCS#12 fichier de clés, puis dans le fichier PEM:

keytool -importkeystore -srckeystore foo.jks \
   -destkeystore foo.p12 \
   -srcstoretype jks \
   -deststoretype pkcs12

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

si vous avez plus d'un certificat dans votre JKS fichier de stockage des clés, et que vous voulez seulement exporter le certificat et la clé associée à l'un des alias, vous pouvez utiliser la variation suivante:

keytool -importkeystore -srckeystore foo.jks \
   -destkeystore foo.p12 \
   -srcalias foo \
   -srcstoretype jks \
   -deststoretype pkcs12

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

Résumé de commande - pour comparer JKS keystore fichier PEM:

keytool -keystore foo.jks -exportcert -alias foo | \
   openssl x509 -inform der -text

openssl x509 -text -in foo.pem

openssl dsa -text -in foo.pem

29voto

Casey Points 19286

J’ai continué à obtenir des erreurs de `` lorsque vous utilisez la commande de StoBor :

Pour une raison quelconque, seulement ce style de commandement fonctionnerait pour mon fichier JKS

La clé se couchait `` , la valeur de l’argument n’avait pas d’importance.

13voto

erickson Points 127945

Le `` commande ne vous permet pas d’exporter la clé privée d’un magasin de clés. Vous devez écrire du code Java pour cela. Ouvrir le magasin de clés, obtenir la clé dont vous avez besoin et enregistrez-le dans un fichier au format PKCS #8. Enregistrez le certificat associé trop.

Utilisez OpenSSL utilitaires pour convertir ces fichiers (qui sont au format binaire) au format PEM.

12voto

sanghaviss Points 21

Conversion directe du fichier jks au fichier pem à l'aide de l'outil keytool

 keytool -exportcert -alias selfsigned -keypass password -keystore test-user.jks -rfc -file test-user.pem
 

2voto

Marco Luly Points 21

J'ai trouvé une solution très intéressante:

http://www.swview.org/node/191

Ensuite, j'ai divisé la paire clé publique / clé privée en deux fichiers private.key publi.pem et cela fonctionne!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X