W tym poradniku pokażemy, jak zabezpieczyć serwer WWW Apache na Ubuntu 18.04 poprzez instalację certyfikatu Secure Sockets Layer (SSL). W dzisiejszych czasach włączenie szyfrowanego połączenia z serwerem sieciowym ma fundamentalne znaczenie, ponieważ pozwala na korzystanie z bezpiecznego protokołu HTTPS dla witryny.
W tym celu zostanie użyty certyfikat wydany przez urząd certyfikacji Let's Encrypt, który wydaje bezpłatne certyfikaty całkowicie zgodnie z wymaganymi standardami bezpieczeństwa. Let's Encrypt upraszcza proces instalacji certyfikatu bezpieczeństwa za pomocą klienta Certbot, aby pomóc mniej doświadczonym użytkownikom zabezpieczyć witrynę internetową.
Najpierw połącz się z serwerem za pośrednictwem połączenia SSH. Jeśli jeszcze tego nie zrobiłeś, zalecamy bezpieczne korzystanie z protokołu SSH zgodnie z naszym przewodnikiem. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal swojego serwera.
Instalacja CertBot
Dodaj repozytorium Certbot:
$ sudo add-apt-repository ppa:certbot/certbot
Zainstaluj Certbot przy użyciu komendy apt:
$ sudo apt install python-certbot-apache
Po zakończeniu instalacji możesz kontynuować z konfiguracją firewalla.
Konfiguracja firewalla
W przypadku zapory na twoim systemie, ustaw ją aby zezwalała na ruch przy pomocy protokołu HTTP i HTTPS do niej.
Podczas korzystania z firewalla wstępnie zainstalowane profile będą dostępne dla Apache. Zobaczmy więc, jak je włączyć.
Aby sprawdzić dostępne profile zainstalowane w zaporze, uruchom polecenie:
Lista podobna do poniższej pojawi się na ekranie:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Aby zezwolić na ruch HTTP (port 80) i HTTPS (port 443) użyj profile “Apache Full”.
Sprawdź informacje o profile wprowadzając:
$ sudo ufw app info "Apache Full"
Następujący opis profilu zostanie wyświetlony:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Po sprawdzeniu profilu, ustaw go jako dozwolony:
$ sudo ufw allow in "Apache Full"
Utworzenie certyfikatu SSL
Wystosuj żądanie wygenerowania certyfikatu domeny, którą chcesz chronić, używając wcześniej zainstalowanego Certbota
Zastąp TWOJA_DOMENA.PL nazwą domeny, którą chcesz chronić:
$ sudo certbot --apache -d TWOJA_DOMENA.PL -d www.TWOJA_DOMENA.PL
Fragment –apache nakazuje aplikacji Certbot wykorzystanie pluginu Apache, a parameter -d odwołuje się do nazw domen, dla których wykorzystywany będzie certyfikat.
Następnie należy podać kontaktowy adres e-mail, zaakceptować regulamin usługi i ustawić przekierowanie ruchu ze strony na protokół HTTPS.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - No further changes to the webserver configuration.
2: Redirect - To redirect all requests to secure HTTPS access. Choose this option fornew websites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Jeśli na stronie znajduje się już skrypt CMS, należy sprawdzić jego kompatybilność z protokołem HTTPS przed przekierowaniem ruchu.
Wprowadź numer odpowiadający twojej decyzji, a następnie jeśli wszystko wykonaliśmy poprawnie, otrzymamy odpowiedni komunikat.
Potwierdzenie odnowienia certyfikatu
Certyfikaty SSL od Let’s Encrypt są ważne przez 90 dni, po czym muszą zostać odnowione. Certbot daje możliwość automatycznego odnowienia certyfikatu, ale by zapewnić prawidłowe funkcjonowanie certyfikatu, rekomendowanym jest wykonywanie tego ręcznie przy pomocy komendy:
$ sudo certbot renew --dry-run
Jeśli nie otrzymasz komunikatu błędu, wtedy odnowienie zakończyło się sukcesem. W przeciwnym wypadku otrzymasz wiadomość na adres e-mail podany podczas tworzenia certyfikatu, przed datą upłynięcia jego ważności.