Ubuntu Server – Certyfikat SSL, HTTPS

article-thumbnail

Zapewne zauważyliście, że strony w internecie można podzielić na dwie grupy. Do pierwszej z nich należą te z przedrostkiem http://, a do drugiej strony https://. Czym się one różnią? Otóż te drugie posiadają certyfikat SSL. Gdy witryna ma zaimplementowany SSL, to wszystkie dane, jakie są wymieniane między serwerem a klientem, są szyfrowane.

Czy możemy wdrożyć certyfikat SSL na nasz serwer WWW? Oczywiście. Ja posłużę się darmowym pakietem openSSL. Na potrzeby komercyjne to rozwiązanie nie jest dobre, ponieważ przeglądarki będą nas „bombardować” komunikatami mówiącymi, że certyfikat jest niezaufany.

Aby uzyskać certyfikat zaufany, musimy go zakupić u uprawnionej organizacji, jednak na potrzeby nauki openSSL spokojnie wystarczy.

Instalacja

Tradycyjnie zacznij od zaktualizowania repozytorium apt.

sudo apt update && apt upgrade -y

Następnie zainstalujmy (jeśli nie jest zainstalowany) pakiet openSSL.

sudo apt install openssl

Teraz możemy przejść do konfiguracji.

Konfiguracja

Generowanie certyfikaty

Na początek stwórzmy katalog, w którym umieścimy pliki klucza i certyfikatu.

sudo mkdir /etc/apache2/certificate
cd /etc/apache2/certificate

Teraz wygenerujmy certyfikat i klucz.

sudo openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out certyfikat.crt – keyout klucz.key

Następnie uzupełniamy formularz wyświetlony formularz. Istotny dla nas jest tylko common name, jeżeli go nie uzupełnimy, to certyfikat się nie wygeneruje.

Konfiguracja apache2

Następnie musimy stworzyć hosta wirtualnego zgodnie z poniższym szablonem. Jeżeli nie wiesz, jak to zrobić, to zapraszam do zapoznania się z tym wpisem na naszym blogu,

<VirtualHost *:443>
ServerAdmin <email administratora>
ServerName <domena serwera>
DocumentRoot <ścieżka do katalogu z plikami witryny>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/certificate/certyfikat.crt
SSLCertificateKeyFile /etc/apache2/certificate/klucz.key
</VirtualHost>

Na końcu włączamy hosta i restartujemy usługę.

sudo systemctl restart apache2
sudo systemctl status apache2

Jeżeli chcesz połączyć sie z hostem przez nazwę domenową, nie zapomnij o skonfigurowaniu DNS’a.

Ostatnią rzeczą, jaką zrobimy, będzie oczywiście sprawdzenie, czy wszystko działa.

Jak widać na powyższym obrazku, certyfikat działa, jednak nie jest „lubiany” przez przeglądarki.