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:
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
Żą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"
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
By podejrzeć dane certyfikatu możemy posłużyć się poniższym poleceniem:
openssl x509 -text -noout -in cetificate.pem
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