Warto wiedzieć:
Format PEM: najczęściej używany format dla większości CA (urzędów certyfikacyjnych). Z reguły ma rozszerzenie: pem, .crt, .cer lub .key. Pliki te można poznać po wpisach: „—–BEGIN CERTIFICATE—–” oraz „—–END CERTIFICATE—–”. Formatu można używać dla certyfikatów oraz kluczy. Można w jednym pliku użyć kilku certyfikatów a nawet klucza prywatnego, jednak należy pamiętać że niektóre aplikacje wymagają oddzielnych plików dla każdego certyfikatu/klucza.
Format DER: jest to binarna forma certyfikatu. Może mieć rozszerzenie .der lub .cer. Aby odróżnić plik DER z rozszerzeniem .cer od certyfikatu PEM z rozszerzeniem .cer najlepiej jest po prostu otworzyć go w edytorze i podejrzeć czy ma wpisy BEGIN/END. Formatu można używać dla certyfikatów oraz kluczy prywatnych.
Format PKCS#12/PFX: jest to format binarny. Z reguły ma rozszerzenie .pfx lub .p12. i używany jest głównie na maszynach windowsowych do importu i eksportu certyfikatów i kluczy prywatnych. Formatu można używać dla certyfikatów oraz kluczy prywatnych aby trzymać je w jednym pliku w zaszyfrowanej formie.
Format PKCS#7/P7B: używany przeważnie przez Microsoft Windows oraz Java Tomcat, z reguły ma rozszerzenie .p7b or .p7c. Certyfikaty P7B te można poznać po wpisach: „—–BEGIN PKCS7—–” oraz „—–END PKCS7—–”. Formatu można używać dla certyfikatów ale już nie dla kluczy.
Kilka przydatnych komend przy generowaniu i modyfikowaniu certyfikatów:
Aby wygenerować sobie własny certyfikat CA, podpisany przez siebie:
openssl req -x509 -newkey rsa:2048 -keyout cakey.pem -out cacert.pem -days 3650
Aby wygenerować CSR – żądanie podpisu certyfikatu przez inne CA:
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem
Aby podejrzeć zawartość wygenerowanego żądania:
openssl req -noout -text -in csr.pem
Aby podejrzeć zawartość wygenerowanego klucza:
openssl rsa -noout -text -in key.pem
Aby podejrzeć zawartość wygenerowanego certyfikatu:
openssl x509 -noout -text -in cert.pem
Aby zweryfikować czy klucz pasuje do żądania:
openssl req -in csr.pem -noout -verify -key key.pem
Aby zweryfikować czy klucz pasuje do certyfikatu (jeżeli otrzymamy tylko jeden Modulus, znaczy to że jest OK):
(openssl x509 -noout -modulus -in cert.pem ;openssl rsa -noout -modulus -in key.pem ) | uniq
Aby podpisać certyfikat własnym CA:
openssl ca -out cert.pem -days 365 -infiles csr.pem
Aby wyrzucić hasło z klucza prywatnego:
openssl rsa < klucz.pem > klucz_bez_hasla.pem
Aby konwertować certyfikat z formatu PEM do formatu P12:
openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile cacert.pem -out cert.p12
Aby konwertować certyfikat z formatu P12 do formatu PEM:
openssl pkcs12 -in cert.p12 -out cert.pem -nodes
Aby konwertować certyfikat z formatu PEM do formatu DER:
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
Aby konwertować certyfikat z formatu DER do formatu PEM:
openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM
Aby konwertować certyfikat do żądania CSR:
openssl x509 -x509toreq -in cert.pem -out csr.pem -signkey key.pem
Aby unieważnić certyfikat:
openssl ca -revoke cert.pem
Aby wygenerować listę unieważnionych certyfikatów – CRL:
openssl ca -gencrl -out crl.pem
Aby sprawdzić szybkość szyfrowania na swojej maszynie:
openssl speed
Aby zaszyfrować jakiś plik np. szyfrowaniem des3:
openssl des3 -in plik -out plik.des3
Aby odszyfrować ten sam plik:
openssl des3 -d -in plik.des3 -out plik
Przy generowaniu większej ilości certyfikatów i administrowaniu nimi łatwo jest się pogubić, polecam świetny, ułatwiający życie programik TinyCA2 – dostępny również w repozytorium Debiana.