Comment puis-je liste / exportation de clés privées à partir d'un fichier de clés?
Comment puis-je liste et l'exportation d'une clé privée à partir d'un fichier de clés?
Vous devez vous connecter pour publier un commentaire.
Comment puis-je liste et l'exportation d'une clé privée à partir d'un fichier de clés?
Vous devez vous connecter pour publier un commentaire.
D'une portion de code à l'origine à partir de l'Exemple de Dépôt de la liste des alias dans un magasin de clés:
L'exportation de clés privées, est apparu sur le Soleil forums il y a quelques mois, et u:turingcompleter est venu avec un DumpPrivateKey classe de couture dans votre application.
Remarque: l'utilisation du forfait Sun, qui est une "mauvaise chose".
Si vous pouvez le télécharger apache commons code, voici une version qui compile sans warning:
et donnent le même résultat:
Vous pouvez l'utiliser comme ceci:
Key key = ks.getKey(args[2], args[1].toCharArray());
devrait lireKey key = ks.getKey(args[2], args[3].toCharArray());
. Le code d'origine suppose que la CLÉ de mot de passe est le même que le mot de passe du fichier de clés, quand ils ne sont pas nécessairement identiques.keyPassword
(phrase de passe associé à la clé). Si vous n'incluez pas une quatrième argument, que la phrase serait le même que le mot de passe du fichier de clés (cas par défaut).changeit
")Vous pouvez extraire une clé privée à partir d'un fichier de clés avec Java6 et OpenSSL. Tout cela repose sur le fait que Java et le support OpenSSL PKCS#12 format des fichiers de clés. Pour faire de l'extraction, de la première utilisation de
keytool
pour convertir le format standard. Assurez-vous que vous utiliser le même mot de passe pour les deux fichiers (clé privée mot de passe, pas le mot de passe du fichier de clés) ou vous obtiendrez bizarre échecs plus tard, dans la deuxième étape.Ensuite, d'utiliser OpenSSL pour faire l'extraction de PEM:
Vous devriez être capable de gérer ce fichier PEM assez facilement; c'est du texte brut avec une codé non chiffrée de la clé privée et le certificat(s) à l'intérieur (dans une assez évident format).
Lorsque vous faites cela, prenez soin de garder les fichiers créés sécurisé. Ils contiennent du secret des informations d'identification. Rien ne vous avertira si vous ne parvenez pas à les fixer correctement. La méthode la plus simple pour sécuriser l'est de pouvoir faire tout cela dans un répertoire qui n'ont pas de droits d'accès pour toute personne autre que l'utilisateur. Et ne mettez jamais votre mot de passe sur la ligne de commande ou dans les variables d'environnement; il est trop facile pour les autres utilisateurs afin de saisir.
Si vous n'avez pas besoin de le faire par programmation, mais juste envie de gérer vos clés, puis j'ai utilisé IBM gratuit KeyMan outil pour un long moment maintenant. Très agréable pour l'exportation d'une clé privée dans un fichier PFX (alors vous pouvez facilement utiliser OpenSSL pour le manipuler, extraire, modifier mdp, etc).
https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=6fb00498-f6ea-4f65-bf0c-adc5bd0c5fcc
Sélectionnez votre fichier de clés, sélectionnez la clé privée de l'entrée, puis Fichier->Enregistrer dans un fichier pkcs12 (*.pfx, généralement). Vous pouvez ensuite afficher le contenu avec:
$ openssl pkcs12-in mykeyfile.pfx -info
Ici est une version plus courte du code ci-dessus, en Groovy. A également intégré dans le codage base64:
Pour le développement android,
pour convertir le fichier de clés créés dans eclipse ADT dans la clé publique et la clé privée utilisée dans SignApk.jar:
exportation de la clé privée:
modifier privé.rsa.pem et de laisser "-----COMMENCER le PRIVATE KEY-----" à "-----FIN de la CLÉ PRIVÉE-----" le paragraphe, puis:
à l'exportation de la clé publique:
signe apk:
Cette question est venue sur stackexchange de sécurité, l'une des suggestions était d'utiliser L'explorateur de fichier de clés
https://security.stackexchange.com/questions/3779/how-can-i-export-my-private-key-from-a-java-keytool-keystore
Avoir juste essayé, il fonctionne vraiment bien et je le recommande vivement.
Tout d'abord, soyez prudent! Tous de votre sécurité dépend de la... euh... de confidentialité de votre clés privées. Keytool n'a pas de clé à l'exportation construit pour éviter la divulgation accidentelle de ce matériel sensible, de sorte que vous pourriez envisager de certaines garanties supplémentaires qui pourraient être mises en place pour protéger vos clés exportées.
Voici un code simple qui vous donne non chiffrés PKCS #8 PrivateKeyInfo qui peut être utilisé par OpenSSL (voir la
-nocrypt
option de son pkcs8 utilitaire):Si vous avez besoin d'autres formats, vous pouvez utiliser un KeyFactory pour obtenir un transparent spécification de la clé pour les différents types de clés. Ensuite, vous pouvez obtenir, par exemple, l'exposant de la clé privée RSA et de sortie dans le format désiré. Qui ferait un bon sujet pour une question de suivi.
Un autre outil intéressant est l'Explorateur de fichier de clés: http://keystore-explorer.sourceforge.net/
Un autre moins conventionnelle, mais sans doute plus facile façon de le faire est avec JXplorer. Bien que cet outil est conçu pour parcourir les annuaires LDAP, il a un facile à utiliser l'interface graphique pour manipuler des fichiers de clés. Une telle fonction sur l'interface utilisateur peut exporter les clés privées d'un JKS keystore.