C'est assez simple, en utilisant au moins jdk6 ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Entrez le mot de passe du fichier de clés:
Ré-entrez le nouveau mot de passe:
Entrez le mot de passe clé pour
(RETURN si identique au mot de passe du keystore):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
Entrez le mot de passe du fichier de clés: asdasd
Certificat:
Les données:
Version: 3 (0x2)
Numéro de série: 1237334757 (0x49c03ae5)
Algorithme de signature: dsaWithSHA1
Émetteur: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validité
Pas avant: 18 mars 00:05:57 2009 GMT
Pas après: 16 juin 00:05:57 2009 GMT
Sujet: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informations sur la clé publique du sujet:
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: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
Entrez le mot de passe du fichier de clés de destination:
Ré-entrez le nouveau mot de passe:
Entrez le mot de passe du fichier de clés source:
Entrée pour l'alias foo importée avec succès.
Commande d'importation terminée: 1 entrées importées avec succès, 0 entrées échouées ou annulées
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
Entrez le mot de passe d'importation:
MAC vérifié OK
Entrez la phrase de passe PEM:
Vérification - Entrez la phrase de passe PEM:
bash $ openssl x509 -text -in foo.pem
Certificat:
Les données:
Version: 3 (0x2)
Numéro de série: 1237334757 (0x49c03ae5)
Algorithme de signature: dsaWithSHA1
Émetteur: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Validité
Pas avant: 18 mars 00:05:57 2009 GMT
Pas après: 16 juin 00:05:57 2009 GMT
Sujet: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Informations sur la clé publique du sujet:
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: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ openssl dsa -text -in foo.pem
lire la clé DSA
Entrez la phrase de passe PEM:
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: jj
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
Vous vous retrouvez avec:
- foo.jks - keystore au format java.
- foo.p12 - keystore au format PKCS # 12.
- foo.pem - toutes les clés et certificats du keystore, au format PEM.
(Ce dernier fichier peut être divisé en clés et certificats si vous le souhaitez.)
Résumé de la commande - pour créer un keystore JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Résumé de la commande - pour convertir le keystore JKS en keystore PKCS # 12, puis en 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 keystore JKS et que vous souhaitez exporter uniquement le certificat et la clé associés à l'un des alias, vous pouvez utiliser la variante 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 la commande - pour comparer le keystore JKS au 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