convertir le format pfx en p12

119

J'ai besoin d'exporter un .pfxcertificat de format (de Windows mmc) vers .p12 pour l'utiliser dans une autre application. Je ne trouve pas un moyen de faire ça. Quelqu'un peut-il suggérer une méthode?

Tom Squires
la source

Réponses:

202

.p12et .pfxsont tous deux des fichiers PKCS # 12. Est-ce que je manque quelque chose?

Avez-vous essayé de renommer le .pfxfichier exporté pour avoir une .p12extension?

jglouie
la source
9
Vous vous demandez pourquoi ce sont deux extensions de fichiers différentes si elles sont vraiment la même chose sous le capot.
BrainSlugs83
29
La raison pour laquelle il existe deux extensions de fichier est historique. PFX était une extension Microsoft, tandis que P12 était celle de Netscape. Les deux formats ont maintenant été adaptés pour être identiques, ce qui signifie que les développeurs peuvent utiliser l'espace de noms .NET System.Security.Cryptography.X509Certificates pour travailler avec les deux. Voir ici pour plus d' informations.
SnapShot
6
L'extension de nom de fichier pour les fichiers PKCS # 12 est ".p12" ou ".pfx". Le "PFX" de Microsoft a été vivement critiqué pour être l'un des protocoles cryptographiques les plus complexes. PKCS # 12 est le successeur du "PFX" de Microsoft. PKCS # 12 fait partie de la famille de normes appelées Public-Key Cryptography Standards (PKCS) publiées par RSA Laboratories.
AKS
1
renommer ne fonctionne pas toujours car. par exemple, si vous utilisez SoapUI et le testez, une authentification bidirectionnelle échoue. p12 & pfx ont une histoire de retour à Netscape & IE. ce sont PRESQUE les mêmes fichiers mais pas identiques. donc certaines applications peuvent comprendre à la fois indépendamment de l'extension et d'autres ont besoin d'un p12 valide 100% compatible tel que SoapUI
M.Hefny
10

J'ai eu des problèmes avec un fichier .pfx avec openconnect. Le changement de nom n'a pas résolu le problème. J'ai utilisé keytool pour le convertir en .p12 et cela a fonctionné.

keytool -importkeystore -destkeystore new.p12 -deststoretype pkcs12 -srckeystore original.pfx

Dans mon cas, le mot de passe du nouveau fichier (new.p12) devait être le même que le mot de passe du fichier .pfx.

user3113045
la source
2
Cela n'a pas fonctionné, même si j'ai utilisé le même mot de passe pour les deux. obtenu l'erreur "erreur keytool: java.io.IOException: format de fichier de clés non valide"
John Smith
5

Si vous recherchez un processus rapide et manuel avec UI. J'utilise toujours Mozilla Firefox pour convertir de PFX en P12. Importez d'abord le certificat dans le navigateur Firefox (Options> Confidentialité et sécurité> Afficher les certificats ...> Importer ...). Une fois installé, effectuez l'exportation pour créer le fichier P12 en choisissant le nom du certificat dans le Gestionnaire de certificats, puis cliquez sur Sauvegarder ... et entrez le nom du fichier, puis entrez le mot de passe.

Paul Chan
la source
4

C'est plus une continuation de la réponse de Jglouie.

Si vous utilisez openssl pour convertir le certificat PKCS # 12 en clés PEM publiques / privées, il n'est pas nécessaire de renommer le fichier. En supposant que le fichier s'appelle cert.pfx, les trois commandes suivantes créeront une clé pem publique et une clé pem privée chiffrée:

openssl pkcs12 -in cert.pfx     -out cert.pem     -nodes -nokeys
openssl pkcs12 -in cert.pfx     -out cert_key.pem -nodes -nocerts
openssl rsa    -in cert_key.pem -out cert_key.pem -des3

Les deux premières commandes peuvent demander un mot de passe d'importation. Ce sera un mot de passe fourni avec le fichier PKCS # 12.

La troisième commande vous permettra de spécifier la phrase de passe de cryptage pour le certificat. C'est ce que vous saisirez lors de l'utilisation du certificat.

Keith Hanlan
la source
La première commande écrase la seconde, alors peut-être juste faire les étapes 2 et 3. Pour info pour les lecteurs, Des3 est le cryptage par défaut pour la clé privée.
goodguys_activate
1

Exécutez cette commande pour changer le .certfichier en .p12:

openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt 

server.keyest la clé du serveur et server.certest un certificat d'émission d'autorité de certification ou un fichier de certificat d'auto-signature.

kishore tiwari
la source