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
J'ai continué à recevoir des erreurs
openssl
lors de l'utilisation de la commande de StoBor:Pour une raison quelconque, seul ce style de commande fonctionnerait pour mon fichier JKS
La clé était le réglage
destkeypass
, la valeur de l'argument n'avait pas d'importance.la source
La
keytool
commande ne vous permettra pas d'exporter la clé privée à partir d'un magasin de clés. Vous devez écrire du code Java pour ce faire. Ouvrez le magasin de clés, obtenez la clé dont vous avez besoin et enregistrez-la dans un fichier au format PKCS # 8. Enregistrez également le certificat associé.Utilisez les utilitaires OpenSSL pour convertir ces fichiers (qui sont au format binaire) au format PEM.
la source
Conversion directe du fichier jks au fichier pem à l'aide de l'outil keytool
la source
keytool
etjboss
pages de doc sans succès. Merci!Instructions simplifiées pour convertir un fichier JKS au format PEM et KEY (.crt & .key):
la source
J'ai trouvé une solution très intéressante:
http://www.swview.org/node/191
Ensuite, j'ai divisé la paire clé publique / privée en deux fichiers private.key publi.pem et ça marche!
la source
La conversion d'un KeyStore JKS en un seul fichier PEM peut facilement être effectuée à l'aide de la commande suivante:
Explication:
keytool -list -rfc -keystore "myKeystore.jks"
répertorie tout dans le KeyStore 'myKeyStore.jks' au format PEM. Cependant, il imprime également des informations supplémentaires.| sed -e "/-*BEGIN [A-Z]*-*/,/-*END [A-Z]-*/!d"
filtre tout ce dont nous n'avons pas besoin. Il ne nous reste que les PEM de tout ce qui se trouve dans le KeyStore.>> "myKeystore.pem"
écrivez les PEM dans le fichier «myKeyStore.pem».la source
sed "s/^\-*BEGIN [A-Z]*\-*$//g;s/^\-*END [A-Z]*\-*$//g"
place (avec gnu sed) mais je ne suis pas sûr que ce soit suffisant s'il y a plus d'un certificat dans votre keystorebash: !d": event not found
: pour bash, un point d'exclamation est une touche courte pour utiliser une commande. Pour utiliser cette réponse, vous devez utiliser des apostrophes à la place des guillemets pour l'option utilisée comme -e pour sedkeytool -list -rfc -keystore "myKeystore.jks" | sed -e '/-*BEGIN [A-Z]*-*/,/-*END [A-Z]-*/!d' >> "myKeystore.pem"
Commencez par vider le keystore de JKS vers PKCS12
1. keytool -importkeystore -srckeystore ~ / .android / debug.keystore -destkeystore intermediaire.p12 -srcstoretype JKS -deststoretype PKCS12
Vider le nouveau fichier pkcs12 dans pem
Vous devez avoir à la fois le certificat et la clé privée au format pem. Divisez-les. Placez la partie entre «BEGIN CERTIFICATE» et «END CERTIFICATE» dans cert.x509.pem Mettez la partie entre «BEGIN RSA PRIVATE KEY» et «END RSA PRIVATE KEY» en private.rsa.pem Convertissez la clé privée au format pk8 comme attendu par signapk
3. openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
la source
Eh bien, OpenSSL devrait le faire facilement à partir d'un fichier n ° 12:
Peut-être plus de détails sur l'erreur / l'échec?
la source
Dans le cas où vous n'avez pas installé openssl et que vous cherchez une solution rapide, il existe un logiciel appelé portcle qui est très utile et petit à télécharger.
L'inconvénient est qu'il n'y a pas de ligne de commande pour autant que je sache. Mais à partir de l'interface graphique, il est assez simple d'exporter une clé privée PEM:
Sélectionnez la clé privée et les certificats et le format PEM
la source
Essayez Keystore Explorer http://keystore-explorer.org/
KeyStore Explorer est un remplacement d'interface graphique open source pour les utilitaires de ligne de commande Java keytool et jarsigner. Il fait également openssl / pkcs12.
la source
créez d'abord le fichier de keystore comme
C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -keystore androidkey.jks -genkeypair -alias androidkey
Entrez le mot de passe du fichier de clés:
Entrez à nouveau le nouveau mot de passe:
Quels sont vos nom et prénom? Inconnu: FirstName LastName
Quel est le nom de votre unité organisationnelle? Inconnu: Développement mobile
Quel est le nom de votre organisation? Inconnu: le nom de votre entreprise
Quel est le nom de votre ville ou localité? Quel est le nom de votre état ou province?
Quel est le code du pays à deux lettres pour cet appareil? Inconnu: IN // appuyez sur Entrée
Est-ce que CN = FirstName LastName, OU = Mobile Development, O = le nom de votre entreprise, L = CityName, ST = StateName, C = IN est correct? [non]: oui
Entrez le mot de passe clé pour (RETURN si identique au mot de passe du fichier de clés): appuyez sur Entrée si vous voulez le même mot de passe
C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -export -rfc -alias androidkey -file android_certificate.pem -keystore androidkey.jks
Entrez le mot de passe du keystore:
Certificat stocké dans le fichier
la source
La réponse la plus précise de toutes doit être que ce n'est PAS possible.
Un keystore Java est simplement une installation de stockage pour les clés cryptographiques et les certificats, tandis que PEM est un format de fichier pour les certificats X.509 uniquement.
la source