Convertir un fichier PKCS#8 de la clé privée PEM en java
Bonjour à tous, je suis en train de convertir un fichier PKCS#8 clé privée que je génère dans mon programme java à un PEM fichier encodé.
Security.addProvider(new BouncyCastleProvider());
SecureRandom rand = new SecureRandom();
JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();
keyPairGen.initialize(2048, rand);
KeyPair keyPair = keyPairGen.generateKeyPair();
PEMWriter privatepemWriter = new PEMWriter(new FileWriter(new File(dir + "private.key")));
privatepemWriter.writeObject(keyPair.getPrivate());
Après avoir exécuté le programme, j'ai la clé privée dans les deux formats et d'une clé publique(le code n'est pas indiqué qu'il fonctionne). Je puis utiliser cette commande openssl pour conver le privé.touche de retour pour un pem formaté fichier.
openssl pkcs8 -nocrypt -inform DER -in private.key -out private2.pem
Quand je compare privé.pem et private2.pem ils sont différents et il est évident que lorsque je tente d'utiliser le privé.pem, il dit que c'est pas un fichier valide.
Ce qui me manque dans le but de les convertir cette clé privée dans le format PEM que j'ai besoin? Je ne peux pas utiliser OpenSSL de l'intérieur de mon programme, sinon, je voudrais simplement ajouter que l'appel de fonction. J'ai accès à BouncyCastle libs dans ce programme, alors peut-être qu'il a une solution, je suis surplombant.
Curl et OpenSSL dire la même chose quand j'essaie d'utiliser le privé.clé pour les diverses opérations.
manquant privatepemWriter.close(); // pour rincer correctement. Je vous remercie.
OriginalL'auteur Hiro2k | 2010-08-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le PEMWriter classe dans Bouncycastle.
Oui, bouncycastle la documentation est pauvre, mais le code source est très facile à lire!
OriginalL'auteur James K Polk
Le fait que OpenSSL utilise son propre format est vraiment la seule chose qui rend cela difficile. Heureusement, le château gonflable PEMWriter rend cela facile, mais l'interface n'est pas très bien documenté. J'ai trouvé un code la recherche par le biais de la liste de diffusion. J'ai adapté ci-dessous:
OriginalL'auteur gflarity
Utiliser l'en-tête:
... et le pied de page:
Noter que le "RSA" est laissé de côté—Le code Java est à l'aide de PKCS #8 codage de la clé privée, et que le codage comprend l'algorithme.
La
openssl
de commande que vous montrer, c'est la conversion d'un format PKCS #8 clé dans la forme d'une propriété clé OpenSSL dans PEM forme. Pour garder le PKCS #8 format, mais convertir de DER à PEM, ajouter le topk8 option. Puis la OpenSSL de sortie doit correspondre à ce que votre code Java produit.Si vous avez besoin pour produire la clé OpenSSL, au lieu de PKCS #8, c'est possible, mais vous aurez à créer votre propre OpenSSL structure avec la BouncyCastle ASN.1 bibliothèque et encoder. Veuillez préciser si c'est ce que vous avez besoin.
Serait-il nuire à vous de l'essayer et de voir?
OriginalL'auteur erickson