Ce guide vous guidera à travers l'extraction des informations d'un fichier PKCS # 12 avec OpenSSL. PKCS # 12 (également connu sous le nom de PKCS12 ou PFX) est un format binaire pour stocker une chaîne de certificats et une clé privée dans un seul fichier cryptable. Les fichiers PKCS # 12 sont couramment utilisés pour importer et exporter des certificats et des clés privées sur les ordinateurs Windows et macOS, et ont généralement les extensions de nom de fichier .p12
or .pfx
.
Pour plus d'informations pratiques et les dernières nouvelles sur la cybersécurité, inscrivez-vous à la newsletter de SSL.com ici :
Qu'est-ce que OpenSSL?
OpenSSL est une boîte à outils de ligne de commande open source très utile pour travailler avec X.509 certificats, demandes de signature de certificat (CSRs) et les clés cryptographiques. Si vous utilisez une variante UNIX comme Linux ou macOS, OpenSSL est probablement déjà installé sur votre ordinateur. Si vous souhaitez utiliser OpenSSL sous Windows, vous pouvez activer Sous-système Linux de Windows 10 ou installez Cygwin. Vous pouvez également facilement engendrent un fichier PKCS # 12 avec openSSL.
SSL.com fournit une grande variété de SSL /TLS certificats de serveur pour les sites Web HTTPS.
Vidéo
Dans tous les exemples ci-dessous, remplacez les noms des fichiers avec lesquels vous travaillez réellement INFILE.p12
, OUTFILE.crt
et OUTFILE.key
.
Afficher les informations PKCS # 12 à l'écran
Pour vider toutes les informations d'un fichier PKCS # 12 sur l'écran de Format PEM, utilisez cette commande:
openssl pkcs12 -info -in INFILE.p12 -nodes
Vous serez alors invité à entrer le mot de passe du fichier PKCS # 12:
Entrez le mot de passe d'importation:
Tapez le mot de passe entré lors de la création du fichier PKCS # 12 et appuyez sur enter
. OpenSSL affichera tous les certificats et clés privées du fichier à l'écran:
Attributs du sac localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 subject = / CN = Aaron Russell/emailAddress=*********@gmail.com issuer = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com certificat client intermédiaire CA RSA R1 ----- ----- BEGIN CERTIFICATE MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3b bioorl0jUg 1Ml2lUF ---- CLÉ PRIVÉ- END-
Crypter la clé privée
Si vous souhaitez crypter la clé privée et la protéger avec un mot de passe avant la sortie, omettez simplement -nodes
drapeau de la commande:
openssl pkcs12 -info -in INFILE.p12
Dans ce cas, vous serez invité à entrer et à vérifier un nouveau mot de passe une fois que OpenSSL aura généré des certificats, et la clé privée sera cryptée (notez que le texte de la clé commence par -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Entrez phrase de passe PEM: Vérification - Entrez phrase de passe PEM: ----- BEGIN CRYPTE CLE PRIVEE ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / 4S H4BSmex / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END CRYPTEES CLÉ PRIVÉE-----
Extraire uniquement les certificats ou la clé privée
Si vous souhaitez uniquement sortir la clé privée, ajoutez -nocerts
à la commande:
openssl pkcs12 -info -in INFILE.p12 -nodes -nocerts
Si vous n'avez besoin que des certificats, utilisez -nokeys
(et comme nous ne sommes pas concernés par la clé privée, nous pouvons également omettre en toute sécurité -nodes
):
openssl pkcs12 -info -in INFILE.p12 -nokeys
Enregistrer des certificats et des clés privées dans des fichiers
Vous pouvez exporter les certificats et la clé privée d'un fichier PKCS # 12 et les enregistrer au format PEM dans un nouveau fichier en spécifiant un nom de fichier de sortie:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nodes
Encore une fois, vous serez invité à entrer le mot de passe du fichier PKCS # 12. Comme précédemment, vous pouvez crypter la clé privée en supprimant le -nodes
drapeau de la commande et / ou ajouter -nocerts
or -nokeys
pour sortir uniquement la clé privée ou les certificats. Ainsi, pour générer un fichier de clé privée, nous pouvons utiliser cette commande:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts
Et pour créer un fichier contenant uniquement les certificats, utilisez ceci:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Convertir la clé privée au format PKCS # 1
Les exemples ci-dessus affichent tous la clé privée par défaut d'OpenSSL PKCS # 8 format. Si vous savez que vous avez besoin PKCS # 1 à la place, vous pouvez diriger la sortie de l'utilitaire PKCS # 12 d'OpenSSL vers son utilitaire RSA ou EC selon le type de clé. Les deux commandes ci-dessous afficheront un fichier clé au format PKCS # 1:
RSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key
Remarque : Vous pouvez faire la différence entre les fichiers de clé privée PKCS # 8 et PKCS # 1 en regardant la première ligne de texte. Les fichiers PKCS # 1 spécifieront l'algorithme:
-----BEGIN RSA PRIVATE KEY-----
Les fichiers PKCS # 8 ne montrent pas l'algorithme et peuvent également être chiffrés:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----