Wstęp
Pliki PFX (Personal Information Exchange) i PEM (Privacy Enhanced Mail) są dwoma różnymi formatami przechowującymi dane klucza publicznego i prywatnego, a także certyfikaty SSL/TLS.
Pierwszy z nich (PFX) stosowany jest często w systemach operacyjnych Windows, natomiast drugi (PEM) spotykany jest na systemach Unix/Linux.
Plik PFX
PFX służy do przechowywania kluczy prywatnych, certyfikatów i innych informacji o bezpieczeństwie w jednym pliku. Plik ten określany jest przez standard PKCS #12. Spotykanymi rozszerzeniami dla PKCS #12 są *.pfx lub *.p12
Plik ten zazwyczaj jest chroniony hasłem.
Plik PEM
PEM służy do kodowania danych binarnych, takich jak klucze publiczne, klucze prywatne i certyfikaty, w czytelnej formie tekstowej podobnej jak poniżej:
—–BEGIN CERTIFICATE—–
<BASE64 DATA>
—–END CERTIFICATE—–.
Format ten jest szeroko stosowany w kontekście certyfikatów X.509, a także kluczy publicznych i prywatnych.
Konwersja
Opcja #1: PFX -> PEM (certyfikat+klucz prywatny)
By uzyskać klucz prywatny (niechroniony hasłem) należy wykonać polecenie:
openssl pkcs12 -in myPfx.pfx -nocerts -out privKey.pem -nodes
By uzyskać certyfikat:
openssl pkcs12 -in myPfx.pfx -clcerts -nokeys -out cert.pem
Oba pliki zawierają rozszerzenie PEM. Ich zawartość można łatwo przejrzeć w edytorach tekstowych.
Opcja #2: PFX -> PEM (jeden plik)
Aby uzyskać tylko jeden plik PEM który będzie zawierał zarówno certyfikat jak i klucz prywatny, należy wykonać polecenie:
openssl pkcs12 -in myPfx.pfx -out convertedCerts.pem -nodes
Przykładowa zawartość pliku PEM wygląda następująco:
Powodzenia!