Konwersja formatu klucza prywatnego i certyfikatu

Z Baza Wiedzy cybo.pl
Operator nie ponosi odpowiedzialności za obszar kliencki (m.in. sprzęt, oprogramowanie i klucze prywatne użytkowników Abonenta). Publikowane przez Operatora informacje dotyczące obszaru klienckiego mają charakter pomocniczy a Abonent może korzystać z nich na własne ryzyko.

Na stronie tej znajdują się opisy przykładowych sposobów konwersji klucza prywatnego i certyfikatu między różnymi formatami. Konwersja może być potrzebna w celu dostosowania formatu do indywidualnych wymagań określonego oprogramowania klienckiego.

Konwersja klucza prywatnego i certyfikatu

Z PEM do PKCS #12

Archiwum PKCS #12 służy do importowania klucza prywatnego i certyfikatu np. do programów Firefox, Chrome, Thunderbird oraz do systemów Android i Windows. Plik-archiwum PKCS #12 posiada standardowo rozszerzenie .p12 lub .pfx.

Za pomocą OpenSSL

Konwersja przykładowego klucza prywatnego w formacie PEM zapisanego w pliku 439d.key oraz certyfikatu w formacie PEM zapisanego w pliku 439d.crt do archiwum PKCS #12 zapisanego w pliku 439d.p12 z nadaniem przykładowej przyjaznej nazwy 439d@demo.cybo.pl możliwa jest za pomocą polecenia

openssl pkcs12 -export -inkey 439d.key -in 439d.crt -out 439d.p12 -name "439d@demo.cybo.pl"

Uwagi:

  • W przypadku jeśli klucz prywatny w pliku 439d.key jest zaszyfrowany, po uruchomieniu powyższego polecenia konieczne będzie podanie hasła do niego.
  • Przed zakończeniem generowania archiwum 439d.p12 program zapyta dwukrotnie o hasło, które będzie użyte do zaszyfrowania tego archiwum. Hasło to będzie potrzebne np. przy imporcie archiwum do programów lub eksporcie plików z tego archiwum jak niżej.
  • Przyjazna nazwa zapisana w archiwum PKCS #12 (439d@demo.cybo.pl w powyższym przykładzie) jest pokazywana w niektórych programach przy certyfikacie zaimportowanym do nich z takiego archiwum.
  • W przypadku korzystania z openssl w wersji 3 lub nowszej (wersję openssl można sprawdzić za pomocą polecenia openssl version), w pliku 439d.p12 użyte zostaną nowsze (bezpieczniejsze) algorytmy kryptograficzne niż w przypadku gdy do generowania używana jest starsza wersja openssl. Nowsze algorytmy kryptograficzne mogą jednak nie być obsługiwane przez starsze oprogramowanie (częsty objaw to odrzucanie hasła do takiego pliku). Zalecane jest używanie aktualnych wersji oprogramowania (zarówno openssl jak i oprogramowania klienckiego), które będą obsługiwać nowsze algorytmy kryptograficzne. W przypadku jeśli jednak niezbędne będzie utworzenie w openssl w wersji 3 lub nowszej pliku 439d.p12 w formacie zgodnym ze starszym oprogramowaniem (przestarzałe algorytmy kryptograficzne), wtedy do parametrów powyższego polecenia można dodać parametr -legacy

Za pomocą WCT

W celu konwersji do archiwum PKCS #12 klucza prywatnego RSA PKCS #8 zapisanego w formacie PEM (klucze takie generowane są np. w przykładach generowania CSR) oraz pasującego do tego klucza certyfikatu w formacie PEM, wystawionego dla użytkownika z ID 439d w serwisie korzystającym z domeny certyfikatów demo.cybo.pl należy:

  1. w przeglądarce WWW otworzyć stronę aplikacji WCT,
  2. w polu ID właściciela podać wartość z pola CN (ang. common name) tematu (ang. subject) certyfikatu, tj. 439d@demo.cybo.pl (o ile nie jest ona tam już wprowadzona),
  3. w polu Hasło podać hasło do odszyfrowania klucza jeśli jest on zaszyfrowany w pliku,
  4. wcisnąć przycisk Załaduj istniejący klucz z pliku, wybrać i załadować plik z kluczem,
  5. wcisnąć przycisk Załaduj certyfikat z pliku, wybrać i załadować plik z certyfikatem,
  6. w polu Hasło podać hasło, które zostanie użyte do zaszyfrowania klucza prywatnego i certyfikatu w wynikowym archiwum PKCS #12 (w tym przypadku w haśle wspierane są tylko drukowalne znaki ASCII),
  7. wcisnąć przycisk Pobierz plik PKCS #12 z kluczem i certyfikatem i zapisać plik z archiwum PKCS #12,
  8. zamknąć stronę aplikacji WCT w przeglądarce WWW.

Uwagi:

  • Archiwa PKCS #12 generowane za pomocą WCT używają nowszych algorytmów kryptograficznych (podobnie jak archiwa tego typu tworzone przez oprogramowanie OpenSSL 3.0. Nowsze algorytmy kryptograficzne mogą jednak nie być obsługiwane przez starsze oprogramowanie (częsty objaw to odrzucanie hasła do takiego pliku). Zalecane jest używanie aktualnych wersji oprogramowania, które będą obsługiwać nowsze algorytmy kryptograficzne. W przypadku jeśli jednak niezbędne będzie utworzenie archiwum PKCS #12 w formacie zgodnym ze starszym oprogramowaniem (przestarzałe algorytmy kryptograficzne), wtedy można do tego celu użyć polecenia openssl jak wyżej.

Z PKCS #12 do PEM

Klucz prywatny

Eksport klucza prywatnego z archiwum PKCS #12 zapisanego w pliku 439d.p12 do pliku 439d.key w formacie PEM możliwy jest za pomocą polecenia

openssl pkcs12 -in 439d.p12 -nocerts -out 439d.key

Uwagi:

  • Przy eksporcie program zapyta o hasło do archiwum oraz dwukrotnie o hasło, którym zaszyfrowany zostanie wyeksportowany klucz.

Certyfikat

Eksport certyfikatu użytkownika z archiwum PKCS #12 zapisanego w pliku 439d.p12 do pliku 439d.crt w formacie PEM możliwy jest za pomocą polecenia

openssl pkcs12 -in 439d.p12 -clcerts -nokeys -out 439d.crt

Konwersja klucza prywatnego

Z zaszyfrowanego do niezaszyfrowanego

Treść klucza prywatnego powinna być znana jedynie jego właścicielowi. Przechowywanie klucza prywatnego w formacie niezaszyfrowanym pozwala na korzystanie z niego bez podawania hasła ale jest mniej bezpieczne (większe ryzyko kompromitacji tego klucza).

Za pomocą OpenSSL

Konwersja przykładowego zaszyfrowanego klucza prywatnego RSA w formacie PEM zapisanego w pliku 439d-pem.key do niezaszyfrowanego klucza prywatnego w formacie PEM zapisanego w pliku 439d-plain-pem.key możliwa jest za pomocą polecenia

openssl pkcs8 -topk8 -nocrypt -in 439d-pem.key -out 439d-plain-pem.key

Za pomocą WCT

W celu konwersji za pomocą aplikacji WCT zaszyfrowanego klucza prywatnego RSA PKCS #8 zapisanego w pliku w formacie PEM (klucze takie generowane są np. w przykładach generowania CSR) do niezaszyfrowanego klucza prywatnego w formacie PEM właściciel tego klucza może:

  1. w przeglądarce WWW otworzyć stronę aplikacji WCT,
  2. w polu ID właściciela podać swój identyfikator np. 439d@demo.cybo.pl,
  3. w polu Hasło podać hasło do odszyfrowania klucza,
  4. wcisnąć przycisk Załaduj istniejący klucz z pliku, wybrać i załadować plik z zaszyfrowanym kluczem,
  5. usunąć treść z pola Hasło i pozostawić to pole puste,
  6. wcisnąć przycisk Pobierz klucz, zaakceptować pobieranie niezaszyfrowanego klucza i zapisać plik z niezaszyfrowanym kluczem,
  7. zamknąć stronę aplikacji WCT w przeglądarce WWW.

Z niezaszyfrowanego do zaszyfrowanego

Za pomocą OpenSSL

Konwersja przykładowego niezaszyfrowanego klucza prywatnego RSA w formacie PEM zapisanego w pliku 439d-plain-pem.key do zaszyfrowanego algorytmem AES256 klucza prywatnego w formacie PEM zapisanego w pliku 439d-pem.key możliwa jest za pomocą polecenia

openssl pkcs8 -topk8 -in 439d-plain-pem.key -out 439d-pem.key

Za pomocą WCT

W celu konwersji za pomocą aplikacji WCT niezaszyfrowanego klucza prywatnego RSA PKCS #8 zapisanego w pliku w formacie PEM (klucze takie generowane są np. w przykładach generowania CSR) do zaszyfrowanego klucza prywatnego w formacie PEM właściciel tego klucza może:

  1. w przeglądarce WWW otworzyć stronę aplikacji WCT,
  2. w polu ID właściciela podać swój identyfikator np. 439d@demo.cybo.pl,
  3. wcisnąć przycisk Załaduj istniejący klucz z pliku, wybrać i załadować plik z niezaszyfrowanym kluczem,
  4. w polu Hasło podać hasło do zaszyfrowania klucza,
  5. wcisnąć przycisk Pobierz klucz i zapisać plik z zaszyfrowanym kluczem,
  6. zamknąć stronę aplikacji WCT w przeglądarce WWW.

Konwersja certyfikatu

Z PEM do DER

Konwersja przykładowego certyfikatu w formacie PEM zapisanego w pliku 439d-pem.crt do certyfikatu w formacie DER zapisanego w pliku 439d-der.crt możliwa jest za pomocą polecenia

openssl x509 -outform der -in 439d-pem.crt -out 439d-der.crt

Z DER do PEM

Konwersja przykładowego certyfikatu w formacie DER zapisanego w pliku 439d-der.crt do certyfikatu w formacie PEM zapisanego w pliku 439d-pem.crt możliwa jest za pomocą polecenia

openssl x509 -inform der -in 439d-der.crt -out 439d-pem.crt

Z PKCS #7/DER do PEM

Konwersja przykładowego certyfikatu w formacie PKCS #7/DER zapisanego w pliku 439d-der.p7b do certyfikatu w formacie PEM zapisanego w pliku 439d-pem.crt możliwa jest za pomocą polecenia

openssl pkcs7 -print_certs -inform der -in 439d-der.p7b -out 439d-pem.crt

Z PKCS #7/PEM do PEM

Konwersja przykładowego certyfikatu w formacie PKCS #7/PEM zapisanego w pliku 439d-pem.p7b do certyfikatu w formacie PEM zapisanego w pliku 439d-pem.crt możliwa jest za pomocą polecenia

openssl pkcs7 -print_certs -in 439d-pem.p7b -out 439d-pem.crt

Z PKCS #7/DER do PKCS #7/PEM

Konwersja przykładowego certyfikatu w formacie PKCS #7/DER zapisanego w pliku 439d-der.p7b do certyfikatu w formacie PKCS #7/PEM zapisanego w pliku 439d-pem.p7b możliwa jest za pomocą polecenia

openssl pkcs7 -inform der -in 439d-der.p7b -out 439d-pem.p7b

Uwagi:

  • Ze względów bezpieczeństwa hasła stosowane do szyfrowania kluczy prywatnych powinny być możliwie trudne do złamania a kopie plików zawierających klucze prywatne powinny być bezpiecznie usuwane gdy nie będą już potrzebne. Przykład polecenia do wygenerowania losowego, 256-bitowego hasła:
    openssl rand -base64 32

Zobacz też: