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