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:
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.
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):
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:
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:
1
|
> openssl pkcs12 -w certyfikacie.pfx -nokey -out certificate.crt
|
A drugim byłoby pobranie klucza prywatnego:
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:
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
1
|
> openssl x509 -..inform der -in certyfikat.cer -out certyfikat.pem
|
Z PEM do DER
1
|
> openssl x509 -outform der -in certificate.pem -out certificate.der
|
Z PEM do PKCS#7 (.p7b, .p7c)
1
|
> openssl crl2pkcs7 -.nocrl -certfile certyfikat.pem -out certyfikat.p7b -certfile CAcert.cer
|
Z PKCS#7 do PEM
1
|
> openssl pkcs7 -.print_certs – w certyfikacie.p7b -out certyfikat.pem
|
Z PKCS#7 do PFX
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!