Własny certyfikat SSL

Szyfrowane połączenie z serwerem to już praktycznie standard. Niestety w przypadku certyfikatów komercyjnych o sensownych okresach ważności musimy liczyć się z odpłatnością a darmowe certyfikaty Let's encrypt mają krótkie terminy ważności. Jeżeli tworzymy projekt który będzie służył tylko nam bądź będzie korzystał z naszego oprogramowania klienckiego możemy skorzystać z samodzielnie wystawionych certyfikatów. Do stworzenia własnych certyfikatów potrzebny będzie OpenSSL.

Procedura wystawienia takiego certyfikatu wygląda następująco:

  • wygenerowanie prywatnego klucza RSA
  • wygenerowanie żądania podpisania certyfikatu (CSR)
  • podpisanie CSR za pomocą klucza

Generowanie prywatnego klucza RSA

Klucz można wygenerować z hasłem które go chroni bądź bez hasła:

Wersja bez hasła: openssl genrsa -out privkey.pem 2048

Wersja z hasłem: openssl genrsa -aes256 -out privkey.pem 2048

Generowanie żądania CSR

Żądanie można utworzyć na dwa sposoby - podając wszystkie parametry jako argumenty polecenia bądź w sposób interaktywny

Poniższe polcenie wywoła interaktywny tryb generowania CSR: openssl req -new -key privkey.pem -out signreq.csr

W tym przypadku wszystkie parametry podajemy jako argumenty przy wywołaniu OpenSSL: openssl req -new -key privkey.pem -out signreq.csr -subj "/C=PL/ST=SL/L=Earth/O=NazwaFirmy/OU=IT/CN=www.nazwaFirmy.org/emailAddress=ktos@nazwaFirmy.org"

Podpisanie CSR za pomocą klucza

Ostatnim krokiem jest podpisanie CSR za pomocą klucza prywatnego. Do tego celu użyjemy tego samego klucza który posłużył do wygenerowania CSR. openssl x509 -req -days 9999 -in signreq.csr -signkey privkey.pem -out certificate.pem

Weryfikacja danych zawartych w certyfikacie

By podejrzeć dane certyfikatu możemy posłużyć się poniższym poleceniem: openssl x509 -text -noout -in cetificate.pem

Usuwanie hasła z klucza prywatnego

W zautomatyzowanym użytowaniu klucza prywatnego hasło potrafi utrudniać sprawę, by je usunąć możemy wykorzystać również OpenSSL: openssl rsa -in privkey.key -out privkey_nopass.key

Następny wpis