Ten poradnik przeprowadzi Cię przez proces wyodrębniania informacji z pliku PKCS # 12 za pomocą OpenSSL. PKCS # 12 (znany również jako PKCS12 lub PFX) to format binarny do przechowywania łańcucha certyfikatów i klucza prywatnego w jednym, szyfrowanym pliku. Pliki PKCS # 12 są powszechnie używane do importowania i eksportowania certyfikatów i kluczy prywatnych na komputerach z systemem Windows i macOS i zwykle mają rozszerzenia nazw plików .p12
or .pfx
.
Aby uzyskać bardziej przydatne instrukcje i najnowsze wiadomości o cyberbezpieczeństwie, zapisz się do newslettera SSL.com tutaj:
Co to jest OpenSSL?
OpenSSL jest bardzo przydatnym zestawem narzędzi wiersza poleceń typu open source do pracy z X.509 certyfikaty, żądania podpisania certyfikatów (CSRs) i klucze kryptograficzne. Jeśli używasz wariantu systemu UNIX, takiego jak Linux lub macOS, OpenSSL prawdopodobnie jest już zainstalowany na Twoim komputerze. Jeśli chcesz używać OpenSSL w systemie Windows, możesz włączyć Podsystem Linux w systemie Windows 10 lub zainstaluj Cygwin. Możesz także łatwo Stwórz plik PKCS # 12 z openSSL.
SSL.com zapewnia szeroką gamę domen SSL /TLS certyfikaty serwera dla witryn HTTPS.
Wideo
We wszystkich przykładach pokazanych poniżej zastąp nazwy plików, nad którymi faktycznie pracujesz INFILE.p12
, OUTFILE.crt
, OUTFILE.key
.
Zobacz informacje o PKCS # 12 na ekranie
Aby zrzucić wszystkie informacje z pliku PKCS # 12 na ekran w Format PEMużyj tego polecenia:
openssl pkcs12 -info -w pliku INFILE.p12 -węzły
Zostaniesz poproszony o podanie hasła do pliku PKCS # 12:
Wprowadź hasło importu:
Wpisz hasło wprowadzone podczas tworzenia pliku PKCS # 12 i naciśnij enter
. OpenSSL wyświetli na ekranie wszelkie certyfikaty i klucze prywatne z pliku:
Atrybuty torby localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 podmiot = / CN = Aaron Russell/emailAddress=*********@gmail.com emitent = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com Client Certificate Intermediate CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1-l2r83
Szyfruj klucz prywatny
Jeśli chcesz zaszyfrować klucz prywatny i zabezpieczyć go hasłem przed wyjściem, po prostu pomiń -nodes
flaga z polecenia:
openssl pkcs12 -info -w INFILE.p12
W takim przypadku zostaniesz poproszony o podanie i zweryfikowanie nowego hasła po tym, jak OpenSSL wyświetli jakiekolwiek certyfikaty, a klucz prywatny zostanie zaszyfrowany (pamiętaj, że tekst klucza zaczyna się od -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Enter PEM frazę: Weryfikacja - Enter PEM frazę: ----- BEGIN zaszyfrowany klucz prywatny ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END szyfrowane PRYWATNY KLUCZ-----
Wyodrębnij tylko certyfikaty lub klucz prywatny
Jeśli chcesz tylko wyprowadzić klucz prywatny, dodaj -nocerts
do polecenia:
openssl pkcs12 -info -w INFILE.p12 -węzły -nocerts
Jeśli potrzebujesz tylko certyfikatów, użyj -nokeys
(a ponieważ nie interesuje nas klucz prywatny, możemy również bezpiecznie pominąć -nodes
):
openssl pkcs12 -info -w INFILE.p12 -nokeys
Zapisz certyfikaty i klucze prywatne w plikach
Możesz wyeksportować certyfikaty i klucz prywatny z pliku PKCS # 12 i zapisać je w formacie PEM do nowego pliku, określając wyjściową nazwę pliku:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -węzły
Ponownie zostaniesz poproszony o podanie hasła do pliku PKCS # 12. Tak jak poprzednio, możesz zaszyfrować klucz prywatny, usuwając rozszerzenie -nodes
flaga z polecenia i / lub dodaj -nocerts
or -nokeys
wyprowadzać tylko klucz prywatny lub certyfikaty. Aby wygenerować plik klucza prywatnego, możemy użyć tego polecenia:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -węzły -nocerts
Aby utworzyć plik zawierający tylko certyfikaty, użyj tego:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Konwertuj klucz prywatny na format PKCS # 1
Powyższe przykłady wyświetlają klucz prywatny w domyślnej wersji OpenSSL PKCS # 8 format. Jeśli wiesz, że potrzebujesz PKCS # 1 zamiast tego możesz potokować wyjście narzędzia PKCS # 12 OpenSSL do jego narzędzia RSA lub EC w zależności od typu klucza. Oba poniższe polecenia spowodują wyświetlenie pliku klucza w formacie PKCS # 1:
RSA
openssl pkcs12 -w INFILE.p12 -węzły -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -w INFILE.p12 -węzły -nocerts | openssl ec -out OUTFILE.key
Uwaga: Różnicę między plikami kluczy prywatnych PKCS # 8 i PKCS # 1 można rozpoznać, patrząc na pierwszy wiersz tekstu. Pliki PKCS nr 1 określają algorytm:
-----BEGIN RSA PRIVATE KEY-----
Pliki PKCS # 8 nie pokazują algorytmu i mogą być również szyfrowane:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----