Denna vägledning leder dig genom att extrahera information från en PKCS # 12-fil med OpenSSL. PKCS # 12 (även känd som PKCS12 eller PFX) är ett binärt format för att lagra en certifikatkedja och en privat nyckel i en enda, krypterbar fil. PKCS # 12-filer används vanligtvis för att importera och exportera certifikat och privata nycklar på Windows och macOS-datorer och har vanligtvis filnamnstillägg .p12
or .pfx
.
För mer användbara instruktioner och de senaste nyheterna om cybersäkerhet, registrera dig för SSL.coms nyhetsbrev här:
Vad är OpenSSL?
OpenSSL är en mycket användbar verktygssats för öppen källkod för att arbeta med X.509 certifikat, begäran om certifikatsignering (CSRs) och kryptografiska nycklar. Om du använder en UNIX-variant som Linux eller macOS är OpenSSL förmodligen redan installerat på din dator. Om du vill använda OpenSSL i Windows kan du aktivera Windows 10: s Linux-delsystem eller installera Cygwin. Du kan också enkelt skapa en PKCS # 12-fil med openSSL.
SSL.com erbjuder ett brett utbud av SSL /TLS servercertifikat för HTTPS-webbplatser.
Video
I alla exemplen som visas nedan ersätter du namnen på filerna du faktiskt arbetar med INFILE.p12
, OUTFILE.crt
och OUTFILE.key
.
Visa PKCS # 12-information på skärmen
För att dumpa all information i en PKCS # 12-fil till skärmen i PEM-format, använd det här kommandot:
openssl pkcs12 -info -in INFILE.p12 -noder
Du kommer sedan att uppmanas att ange lösenordet för PKCS # 12-fil:
Ange importlösenord:
Skriv in det lösenord som anges när du skapar PKCS # 12-filen och tryck på enter
. OpenSSL kommer att skriva ut alla certifikat och privata nycklar i filen till skärmen:
Väska Attribut localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 ämne = / CN = Aaron Russell/emailAddress=*********@gmail.com emittent = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com klientcertifikat Intermediate CA RSA R1 ----- BEGIN INTYG ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1Ml2r83LIV-
Kryptera privat nyckel
Om du vill kryptera den privata nyckeln och skydda den med ett lösenord innan den matas ut, helt enkelt utelämna -nodes
flagga från kommandot:
openssl pkcs12 -info -i INFILE.p12
I detta fall kommer du att uppmanas att ange och verifiera ett nytt lösenord efter att OpenSSL har matat ut några certifikat, och den privata nyckeln kommer att krypteras (notera att textens nyckel börjar med -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Ange PEM lösenfras: Verifiera - Skriv PEM lösenordsfras: ----- BEGIN krypterade privata KEY ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- krypterad PRIVAT NYCKEL -----
Extrahera endast certifikat eller privat nyckel
Om du bara vill skriva ut den privata nyckeln lägger du till -nocerts
till kommandot:
openssl pkcs12 -info -in INFILE.p12 -noder -nocerts
Om du bara behöver certifikaten, använd -nokeys
(och eftersom vi inte är intresserade av den privata nyckeln kan vi också säkert utelämna -nodes
):
openssl pkcs12 -info -i INFILE.p12 -nokeys
Spara certifikat och privata nycklar i filer
Du kan exportera certifikaten och den privata nyckeln från en PKCS # 12-fil och spara dem i PEM-format till en ny fil genom att ange ett utgångsfilnamn:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -noder
Återigen kommer du att bli ombedd att ange lösenordet för PKCS # 12-filen. Som tidigare kan du kryptera den privata nyckeln genom att ta bort -nodes
flagga från kommandot och / eller lägg till -nocerts
or -nokeys
för att bara skriva ut den privata nyckeln eller certifikaten. Så för att generera en privat nyckelfil kan vi använda detta kommando:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -noder -nocerts
Och för att skapa en fil som endast innehåller certifikaten, använd den här:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Konvertera privat nyckel till PKCS # 1-format
Exemplen framför allt matar ut den privata nyckeln i OpenSSLs standard PKCS # 8 formatera. Om du vet att du behöver PKCS # 1 istället kan du leda utdata från OpenSSL: s PKCS # 12-verktyg till dess RSA- eller EC-verktyg beroende på nyckeltyp. Båda kommandona nedan matar ut en nyckelfil i PKCS # 1-format:
RSA
openssl pkcs12 -in INFILE.p12 -noder -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -noder -nocerts | openssl ec -out OUTFILE.key
Notera: Du kan se skillnaden mellan PKCS # 8 och PKCS # 1-privata nyckelfiler genom att titta på den första raden i text. PKCS # 1-filer anger algoritmen:
-----BEGIN RSA PRIVATE KEY-----
PKCS # 8-filer visar inte algoritmen och kan också vara krypterade:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----