Konwersja formatu klucza prywatnego i certyfikatu: Różnice pomiędzy wersjami

Z Baza Wiedzy cybo.pl
Nie podano opisu zmian
Nie podano opisu zmian
 
(Nie pokazano 14 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
{{Odpowiedzialność za obszar kliencki}}
{{Odpowiedzialność za obszar kliencki}}
Poniższa strona zawiera przykładowe polecenia do konwersji klucza prywatnego i certyfikatu między różnymi formatami, przy wykorzystaniu oprogramowania [https://www.openssl.org/community/binaries.html OpenSSL]. Konwersja może być potrzebna w celu dostosowania formatu do indywidualnych wymagań określonego oprogramowania klienckiego.
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 =
= Konwersja klucza prywatnego i certyfikatu =


== Z PEM do PKCS #12 ==
== Z PEM do PKCS #12 ==


Konwersja przykładowego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d.key</tt> oraz certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d.crt</tt> do archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <tt>439d.p12</tt> z nadaniem przykładowej przyjaznej nazwy '439d@demo.cybo.pl' możliwa jest za pomocą polecenia
Archiwum PKCS #12 służy do importowania klucza prywatnego i certyfikatu np. do programów [[Firefox]], [[Google Chrome|Chrome]], [[Thunderbird]] oraz do systemów [[Android]] i [[Microsoft Windows|Windows]]. Plik-archiwum PKCS #12 posiada standardowo rozszerzenie <code>.p12</code> lub <code>.pfx</code>.
 
=== Za pomocą OpenSSL ===
 
Konwersja przykładowego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d.key</code> oraz certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d.crt</code> do archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <code>439d.p12</code> z nadaniem przykładowej przyjaznej nazwy <code>439d@demo.cybo.pl</code> możliwa jest za pomocą polecenia
<pre>openssl pkcs12 -export -inkey 439d.key -in 439d.crt -out 439d.p12 -name "439d@demo.cybo.pl"
<pre>openssl pkcs12 -export -inkey 439d.key -in 439d.crt -out 439d.p12 -name "439d@demo.cybo.pl"
</pre>
</pre>


Uwagi:
Uwagi:
* Archiwum PKCS #12 służy do importowania klucza prywatnego i certyfikatu np. do programów [[Firefox]], [[Thunderbird]] oraz do systemów [[Android]] i [[Windows]].
* W przypadku jeśli klucz prywatny w pliku <code>439d.key</code> jest zaszyfrowany, po uruchomieniu powyższego polecenia konieczne będzie podanie hasła do niego.
* W przypadku jeśli klucz prywatny w pliku <tt>439d.key</tt> jest zaszyfrowany, po uruchomieniu powyższego polecenia konieczne będzie podanie hasła do niego.
* Przed zakończeniem generowania archiwum <code>439d.p12</code> 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.
* Przed zakończeniem generowania archiwum <tt>439d.p12</tt> 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 [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] (<code>439d@demo.cybo.pl</code> w powyższym przykładzie) jest pokazywana w niektórych programach przy certyfikacie zaimportowanym do nich z takiego archiwum.
* Przyjazna nazwa zapisana w archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] (<tt>439d@demo.cybo.pl</tt> 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 <code>openssl&nbsp;version</code>), w pliku <code>439d.p12</code> 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 <code>439d.p12</code> w formacie zgodnym ze starszym oprogramowaniem (przestarzałe algorytmy kryptograficzne), wtedy do parametrów powyższego polecenia można dodać parametr <code>-legacy</code>
 
=== Za pomocą WCT ===
 
W celu konwersji do archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] PKCS #8 zapisanego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] (klucze takie generowane są np. w [[CSR|przykładach generowania CSR]]) oraz pasującego do tego klucza certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM], wystawionego dla użytkownika z ID <code>439d</code> w serwisie korzystającym z [[Domena certyfikatów|domeny certyfikatów]] <code>demo.cybo.pl</code> należy:
# w przeglądarce WWW otworzyć stronę aplikacji [[WCT]],
# w polu ''ID właściciela'' podać wartość z pola CN (ang. <i>common name</i>) tematu (ang. <i>subject</i>) certyfikatu, tj. <code>439d@demo.cybo.pl</code> (o ile nie jest ona tam już wprowadzona),
# w polu ''Hasło'' podać hasło do odszyfrowania klucza jeśli jest on zaszyfrowany w pliku,
# wcisnąć przycisk ''Załaduj istniejący klucz z pliku'', wybrać i załadować plik z kluczem,
# wcisnąć przycisk ''Załaduj certyfikat z pliku'', wybrać i załadować plik z certyfikatem,
# w polu ''Hasło'' podać hasło, które zostanie użyte do zaszyfrowania klucza prywatnego i certyfikatu w wynikowym archiwum PKCS #12,
# wcisnąć przycisk ''Pobierz plik PKCS #12 z kluczem  i certyfikatem'' i zapisać plik z archiwum PKCS #12,
# 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 <code>openssl</code> [[#Za pomocą OpenSSL|jak wyżej]].


== Z PKCS #12 do PEM ==
== Z PKCS #12 do PEM ==
Linia 20: Linia 40:
=== Klucz prywatny ===
=== Klucz prywatny ===


Eksport klucza prywatnego z archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <tt>439d.p12</tt> do pliku <tt>439d.key</tt> w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] możliwy jest za pomocą polecenia
Eksport klucza prywatnego z archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <code>439d.p12</code> do pliku <code>439d.key</code> w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] możliwy jest za pomocą polecenia
<pre>openssl pkcs12 -in 439d.p12 -nocerts -out 439d.key
<pre>openssl pkcs12 -in 439d.p12 -nocerts -out 439d.key
</pre>
</pre>
Linia 29: Linia 49:
=== Certyfikat ===
=== Certyfikat ===


Eksport certyfikatu użytkownika z archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <tt>439d.p12</tt> do pliku <tt>439d.crt</tt> w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] możliwy jest za pomocą polecenia
Eksport certyfikatu użytkownika z archiwum [https://en.wikipedia.org/wiki/PKCS_12 PKCS #12] zapisanego w pliku <code>439d.p12</code> do pliku <code>439d.crt</code> w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] możliwy jest za pomocą polecenia
<pre>openssl pkcs12 -in 439d.p12 -clcerts -nokeys -out 439d.crt
<pre>openssl pkcs12 -in 439d.p12 -clcerts -nokeys -out 439d.crt
</pre>
</pre>
Linia 36: Linia 56:


== Z zaszyfrowanego do niezaszyfrowanego ==
== Z zaszyfrowanego do niezaszyfrowanego ==
{{Informacja|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 [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.key</tt> do niezaszyfrowanego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-plain-pem.key</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego zaszyfrowanego klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.key</code> do niezaszyfrowanego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-plain-pem.key</code> możliwa jest za pomocą polecenia
<pre>openssl rsa -in 439d-pem.key -out 439d-plain-pem.key
<pre>openssl pkcs8 -topk8 -nocrypt -in 439d-pem.key -out 439d-plain-pem.key
</pre>
</pre>


Uwagi:
=== Za pomocą WCT ===


* 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).
W celu konwersji za pomocą aplikacji [[WCT]] zaszyfrowanego klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] PKCS #8 zapisanego w pliku w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] (klucze takie generowane są np. w [[CSR|przykładach generowania CSR]]) do niezaszyfrowanego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] właściciel tego klucza może:
# w przeglądarce WWW otworzyć stronę aplikacji [[WCT]],
# w polu ''ID właściciela'' podać swój identyfikator np. <code>439d@demo.cybo.pl</code>,
# w polu ''Hasło'' podać hasło do odszyfrowania klucza,
# wcisnąć przycisk ''Załaduj istniejący klucz z pliku'', wybrać i załadować plik z zaszyfrowanym kluczem,
# usunąć treść z pola ''Hasło'' i pozostawić to pole puste,
# wcisnąć przycisk ''Pobierz klucz'', zaakceptować pobieranie niezaszyfrowanego klucza i zapisać plik z niezaszyfrowanym kluczem,
# zamknąć stronę aplikacji WCT w przeglądarce WWW.


== Z niezaszyfrowanego do zaszyfrowanego ==
== Z niezaszyfrowanego do zaszyfrowanego ==
Konwersja przykładowego niezaszyfrowanego klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-plain-pem.key</tt> do zaszyfrowanego algorytmem AES256 klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.key</tt> możliwa jest za pomocą polecenia
 
<pre>openssl rsa -aes256 -in 439d-plain-pem.key -out 439d-pem.key
=== Za pomocą OpenSSL ===
 
Konwersja przykładowego niezaszyfrowanego klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-plain-pem.key</code> do zaszyfrowanego algorytmem AES256 klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.key</code> możliwa jest za pomocą polecenia
<pre>openssl pkcs8 -topk8 -in 439d-plain-pem.key -out 439d-pem.key
</pre>
</pre>
=== Za pomocą WCT ===
W celu konwersji za pomocą aplikacji [[WCT]] niezaszyfrowanego klucza prywatnego [https://pl.wikipedia.org/wiki/RSA_(kryptografia) RSA] PKCS #8 zapisanego w pliku w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] (klucze takie generowane są np. w [[CSR|przykładach generowania CSR]]) do zaszyfrowanego klucza prywatnego w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] właściciel tego klucza może:
# w przeglądarce WWW otworzyć stronę aplikacji [[WCT]],
# w polu ''ID właściciela'' podać swój identyfikator np. <code>439d@demo.cybo.pl</code>,
# wcisnąć przycisk ''Załaduj istniejący klucz z pliku'', wybrać i załadować plik z niezaszyfrowanym kluczem,
# w polu ''Hasło'' podać hasło do zaszyfrowania klucza,
# wcisnąć przycisk ''Pobierz klucz'' i zapisać plik z zaszyfrowanym kluczem,
# zamknąć stronę aplikacji WCT w przeglądarce WWW.


= Konwersja certyfikatu =
= Konwersja certyfikatu =
Linia 54: Linia 96:
== Z PEM do DER ==
== Z PEM do DER ==


Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.crt</tt> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <tt>439d-der.crt</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.crt</code> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <code>439d-der.crt</code> możliwa jest za pomocą polecenia
<pre>openssl x509 -outform der -in 439d-pem.crt -out 439d-der.crt
<pre>openssl x509 -outform der -in 439d-pem.crt -out 439d-der.crt
</pre>
</pre>
Linia 60: Linia 102:
== Z DER do PEM ==
== Z DER do PEM ==


Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <tt>439d-der.crt</tt> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.crt</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <code>439d-der.crt</code> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.crt</code> możliwa jest za pomocą polecenia
<pre>openssl x509 -inform der -in 439d-der.crt -out 439d-pem.crt
<pre>openssl x509 -inform der -in 439d-der.crt -out 439d-pem.crt
</pre>
</pre>
Linia 66: Linia 108:
== Z PKCS #7/DER do PEM ==
== Z PKCS #7/DER do PEM ==


Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <tt>439d-der.p7b</tt> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.crt</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <code>439d-der.p7b</code> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.crt</code> możliwa jest za pomocą polecenia
<pre>openssl pkcs7 -print_certs -inform der -in 439d-der.p7b -out 439d-pem.crt
<pre>openssl pkcs7 -print_certs -inform der -in 439d-der.p7b -out 439d-pem.crt
</pre>
</pre>
Linia 72: Linia 114:
== Z PKCS #7/PEM do PEM ==
== Z PKCS #7/PEM do PEM ==


Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.p7b</tt> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.crt</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.p7b</code> do certyfikatu w formacie [https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.crt</code> możliwa jest za pomocą polecenia
<pre>openssl pkcs7 -print_certs -in 439d-pem.p7b -out 439d-pem.crt
<pre>openssl pkcs7 -print_certs -in 439d-pem.p7b -out 439d-pem.crt
</pre>
</pre>
Linia 78: Linia 120:
== Z PKCS #7/DER do PKCS #7/PEM ==
== Z PKCS #7/DER do PKCS #7/PEM ==


Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <tt>439d-der.p7b</tt> do certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <tt>439d-pem.p7b</tt> możliwa jest za pomocą polecenia
Konwersja przykładowego certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER] zapisanego w pliku <code>439d-der.p7b</code> do certyfikatu w formacie [https://en.wikipedia.org/wiki/PKCS_7 PKCS #7]/[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM] zapisanego w pliku <code>439d-pem.p7b</code> możliwa jest za pomocą polecenia
<pre>openssl pkcs7 -inform der -in 439d-der.p7b -out 439d-pem.p7b
<pre>openssl pkcs7 -inform der -in 439d-der.p7b -out 439d-pem.p7b
</pre>
</pre>
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: <pre>openssl rand -base64 32</pre>


Zobacz też:
Zobacz też:
*[https://pl.wikipedia.org/wiki/OpenSSL OpenSSL]
*[[OpenSSL]]
*[https://www.openssl.org/docs/ Dokumentacja openssl]
*[[WCT]]
 
[[Kategoria:Android]]
[[Kategoria:OpenSSL]]
[[Kategoria:WCT]]
[[Kategoria:Windows]]

Aktualna wersja na dzień 18:33, 28 maj 2025

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,
  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ż: