Posiadanie łasnego "urzędu certyfikacji" CA (certificate authority) pozwala na tworzenie dowolnej liczby certyfikatów które można łatwo zweryfikować posługując się jednym zaufanym kluczem publicznym naszego własnego "urzędu".
Poniżej przedstawiona jest procedura pozwalająca na wygenerowanie certyfikatu CA i kluczy CA a następnie kolejnych certyfikatów zależnych.
openssl genrsa -aes256 -out ca.key 2048
openssl req -new -x509 -days 9999 -key ca.key -out ca.crt
openssl genrsa -out server.key 2048
Teraz towrzymy żądanie utworzenia certyfikatu (.csr). Wypełnić należy pole common name - zwykle to domena pod którą będzie pracował serwer posługujący się certyfikatem. Można również użyć adresu IP maszyny dla której wystawiamy certyfikat.
openssl req -new -out server.csr -key server.key
Teraz używamy klucza CA do zweryfikowania i podpisania żądania utworzenie certyfikatu serwera. Wygenerowany zostanie plik server.crt.
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 9999
Dla serwera potrzebne są tylko poniższe pliki:
Plik ca.crt musi być dostępny dla każdego klienta który będzie się łączył z serwerem który posługuje się ceryfikatem wygenerowanym według powyższej procedury.
Polecenie openssl verify -CAfile ca.crt server.crt sprawdza czy plik .crt serwera jest wydany przez nasz CA i jest prawidłowo podpisany.
Termin ważności certyfikatu można sprawidzić używając polecenia openssl x509 -enddate -noout -in server.crt
Niektóre programy wykorzystują certyfikaty w formie plików PEM. Nasze CRT możemy łatwo przekonwertować do PEM używając polecnia:
openssl x509 -in server.crt -out server.pem -outform PEM
Warto zaznaczyć, że standardowo wygenerowane pliki mimo rozszerzenia .crt mogą być plikami .pem - plik pem zaczyna się od -----BEGIN i nie jest plikiem binarnym.