OpenSSL – Jak przekonwertować certyfikaty SSL do różnych formatów – PEM CRT CER PFX P12 & więcej

W tym wpisie, będącym częścią cyklu „Jak zarządzać certyfikatami SSL w systemach Windows i Linux”, pokażemy jak przekonwertować certyfikat SSL do najpopularniejszych formatów zdefiniowanych w standardach X.509: formatu PEM oraz formatu PKCS#12, znanego również jako PFX. Proces konwersji zostanie zrealizowany przy użyciu OpenSSL, darmowego narzędzia dostępnego na platformy Linux i Windows.

Przed przystąpieniem do obsługi konsoli OpenSSL zalecamy zapoznanie się z naszym przeglądem standardów X.509 i najpopularniejszych formatów certyfikatów SSL – CER, CRT, PEM, DER, P7B, PFX, P12 i tak dalej.

Instalacja OpenSSL

Pierwszą rzeczą, jaką należy zrobić, jest upewnienie się, że w systemie jest zainstalowany OpenSSL: jest to narzędzie, które zapewnia otwartą implementację protokołów SSL i TLS i które może być użyte do konwersji plików certyfikatów do najpopularniejszych formatów opartych na X.509 v3.

OpenSSL na Linuksie

Jeśli używasz Linuksa, możesz zainstalować OpenSSL za pomocą następującego polecenia konsoli YUM:

Powłoka
1
> yum install openssl

Jeśli Twoja dystrybucja oparta jest na APT zamiast YUM, możesz zamiast tego użyć następującego polecenia:

1
> apt-.get install openssl

OpenSSL w systemie Windows

Jeśli używasz systemu Windows, możesz zainstalować jedną z wielu implementacji OpenSSL o otwartym kodzie źródłowym: ta, którą możemy polecić to Win32 OpenSSL autorstwa Shining Light Production, dostępna jako wersja light lub pełna, obie skompilowane w trybach x86 (32-bit) i x64 (64-bit) . Możesz zainstalować dowolną z tych wersji, o ile Twój system je obsługuje.

WAŻNE: OpenSSL dla Windows wymaga do działania runtime Visual C++ 2008 Redistributables.

OpenSSL jest w zasadzie aplikacją konsolową, co oznacza, że będziemy jej używać z wiersza poleceń: po zakończeniu procesu instalacji należy sprawdzić, czy folder instalacyjny (C:\Program Files\OpenSSL-Win64\bin dla wersji 64-bitowej) został dodany do systemowej PATH (Panel sterowania > System> Zaawansowane > Zmienne środowiskowe): jeśli tak nie jest, zdecydowanie zalecamy ręczne dodanie jej, aby uniknąć wpisywania pełnej ścieżki do pliku wykonywalnego za każdym razem, gdy będziesz musiał uruchomić narzędzie.

Po zainstalowaniu OpenSSL będziemy mogli użyć go do konwersji naszych certyfikatów SSL w różnych formatach.

Z PEM (pem, cer, crt) do PKCS#12 (p12, pfx)

Jest to polecenie konsolowe, którego możemy użyć do konwersji pliku certyfikatu PEM (rozszerzenia .pem, .cer lub .crt), wraz z jego kluczem prywatnym (rozszerzenie.key), w jeden plik PKCS#12 (rozszerzenia .p12 i .pfx):

Powłoka

1
> openssl pkcs12 -….export -in certyfikat.crt -inkey privatekey.key -out certificate.pfx

Jeśli posiadasz również plik z certyfikatami pośrednimi (np. CAcert.crt) , można go dodać do „bundle” za pomocą parametru polecenia -certfile w następujący sposób:

Powłoka

1
> openssl pkcs12 -export -in certyfikat.crt -inkey privatekey.key -out certificate.pfx -certfile CAcert.cr

Z PKCS#12 do PEM

Jeśli potrzebujesz „wyodrębnić” certyfikat PEM (.pem, .cer lub .crt) i/lub jego klucz prywatny (.key) z jednego pliku PKCS#12 (.p12 lub .pfx), należy wydać dwie komendy.

Pierwszym z nich jest wyodrębnienie certyfikatu:

Shell

1
> openssl pkcs12 -w certyfikacie.pfx -nokey -out certificate.crt

A drugim byłoby pobranie klucza prywatnego:

Powłoka

1
> openssl pkcs12 -in certyfikat.pfx -out privatekey.key

IMPORTANT: klucz prywatny uzyskany za pomocą powyższego polecenia będzie w formacie zaszyfrowanym: aby przekonwertować go do formatu RSA, należy wprowadzić trzecie polecenie:

Shell

1
> openssl rsa – w kluczu prywatnym.in privatekey.key -out privatekey_rsa.key

Nie trzeba dodawać, że ponieważ PKCS#12 jest formatem chronionym hasłem, w celu wykonania wszystkich powyższych poleceń zostaniesz poproszony o podanie hasła, które zostało użyte podczas tworzenia pliku .pfx.

Z DER (.der, cer) do PEM

Powłoka
1
> openssl x509 -..inform der -in certyfikat.cer -out certyfikat.pem

Z PEM do DER

Powłoka

1
> openssl x509 -outform der -in certificate.pem -out certificate.der

Z PEM do PKCS#7 (.p7b, .p7c)

Powłoka
1
> openssl crl2pkcs7 -.nocrl -certfile certyfikat.pem -out certyfikat.p7b -certfile CAcert.cer

Z PKCS#7 do PEM

Powłoka

1
> openssl pkcs7 -.print_certs – w certyfikacie.p7b -out certyfikat.pem

Z PKCS#7 do PFX

Powłoka

1
2

> openssl pkcs7 -.print_certs -in certificatename.p7b -out certificatename.cer
> openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Online SSL Converters

Jeśli nie możesz (lub nie chcesz) zainstalować OpenSSL, możesz przekonwertować swoje certyfikaty SSL używając jednego z tych narzędzi online:

  • SSL Certificates Converter Tool by SSLShopper.com
  • SSL Converter by NameCheap

Oba narzędzia działają naprawdę dobrze i mogą przekonwertować większość, jeśli nie wszystkie, formaty wyszczególnione powyżej: w tym samym czasie, musisz poważnie zastanowić się nad implikacjami bezpieczeństwa, które wiążą się z przesyłaniem Twoich certyfikatów SSL (i ewentualnie ich kluczy prywatnych) do usługi innej firmy. Na dzień dzisiejszy te dwie witryny są godne zaufania i bezpieczne, ale nadal nie polecamy takiego posunięcia.

Wnioski

To tyle, przynajmniej na razie: mamy nadzieję, że te polecenia będą pomocne dla tych programistów i administratorów systemów, którzy potrzebują przekonwertować certyfikaty SSL w różnych formatach wymaganych przez ich aplikacje.

Do zobaczenia następnym razem!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *