Dodajemy szyfrowanie – Apache, Let’s Encrypt Certbot i SSL

Czas czytania: 5 minut

Lwia część stron internetowych posiada już certyfikat. „Zielona kłódeczka”, która zapewnia nas o bezpieczeństwie staje się coraz bardziej istotnym punktem witryny. Wg raportu Google w 2016 roku prawie 25% witryn korzystało z protokołu HTTPS. Google i inne firmy już od dawna informują, że nieszyfrowane strony będą miały gorsze pozycjonowanie. W rezultacie dotrze do nich mniejsza ilość użytkowników.

Google Chrome już od jakiegoś czasu wyświetla napis „Niezabezpieczona” kiedy wchodzimy na witrynę bez szyfrowania.

Dla wielu początkujących webmasterów instalacja SSL-a stanowi spory problem. Gdzie uzyskać certyfikat płacąc jak najmniej? Jak zainstalować go na swoim serwerze WWW? Dowiesz się czytając kolejne akapity tego tekstu.

Let’s Encrypt Certbot – automatyczna instalacja certyfikatu

Istnieje wielu droższych i tańszych dostawców. Ja polecam Let’s Encrypt. Jest to darmowy i prosty w instalacji certyfikat, który idealnie nadaje się na twoją stronę. W przypadku Let’s Encrypt większa część pracy jest wykonywana automatycznie. Odpowiada za to aplikacja Certbot. W zależności od oprogramowania oraz dystrybucji, której używamy, potrzebna będzie inna wersja Certbota. Aby uzyskać wskazówki, wystarczy wejść na tę stronę i wybrać duet: serwer WWW i system operacyjny, którego używamy. W moim wypadku jest to Debian Stretch i serwer Apache. Temu połączeniu poświęcę dalszą część artykułu.

Dodanie stretch-backports do /etc/apt/sources.list

Program Certbot będziemy mogli zainstalować za pomocą menedżera pakietów apt-get. Znajduje się on w repozytoriach typu backports. Co za tym idzie, musimy wcześniej dodać je do pliku konfiguracyjnego. Nie jest to trudna operacja. Za pomocą ulubionego edytora (vim,emacs albo nano) otwieramy plik /etc/apt/sources.list. Na samym końcu dopisujemy następujące linijki:

1
2
deb http://ftp.debian.org/debian stretch-backports main
deb-src http://ftp.debian.org/debian stretch-backports main

Aby zaktualizować bazę dostępnych pakietów, musimy wydać polecenie:

apt-get update

Instalacja Certbot

Po dodaniu odpowiednich repozytoriów możemy już bez żadnych przeszkód podjąć próbę instalacji Certbot. Zrobimy to za pomocą polecenia

apt-get install python-certbot-apache -t stretch-backports

instalacja certbot

Naciskamy klawisz T aby kontynuować i idziemy sobie zaparzyć kawę/herbatę. Serwer w tym czasie wykona swoją pracę i zainstaluje nam Certbot.

Certbot – generowanie certyfikatu SSL Let’s Encrypt

Program Certbot został już wgrany. Zapytasz pewnie, co dalej? Możemy teraz pójść dwoma ścieżkami. Pierwsza opcja to oddanie całej pozostałej pracy automatowi. Wydajemy wtedy polecenie

certbot --apache

Dzięki temu cała brudna robota zostanie odwalona przez automat. Ja niestety jestem konserwatystą i nie lubię gdy ktoś za mnie decyduje w tak ważnych sprawach jak konfiguracja serwera. Wobec tego pokażę drogę trudniejszą, ale dającą o wiele więcej kontroli (oraz satysfakcji). Mianowicie – użyjemy Certbot jedynie do wygenerowania certyfikatu, który zainstalujemy sobie samodzielnie.

Aby wygenerować certyfikat, powinniśmy użyć polecenia:

certbot --apache certonly

Certbot na początku zażąda od nas podania adresu e-mail. Następnie każe nam przeczytać warunki umowy, na które musimy się zgodzić.

certbot licencja

Następnie możemy się zgodzić (lub nie) na udostępnienie naszego adresu e-mail innym organizacjom, współpracującym z Let’s Encrypt.

Podsumowanie instalacji Certbot

Na samym końcu podajemy nazwę naszej domeny. Certbot sprawdza, czy rzeczywiście może wygenerować dla nas certyfikat. Jeśli wszystkie testy zakończą się pomyślnie, certyfikat będzie gotowy do instalacji w folderach wskazanych przez aplikację.

Możemy uruchomić Certbot jeszcze raz, aby wygenerować pliki dla subdomeny www (czyli dla adresu w postaci www.kompikownia.pl).

Wszystkie pliki powiązane z certyfikatami wygenerowanymi na potrzeby naszych domen znajdują się w folderze /etc/letsencrypt/live. Wchodząc do folderu pod wskazaną ścieżką, ujrzymy katalogi o nazwach takich samych jak nazwy domen, dla których wygenerowaliśmy certyfikaty. W każdym z tych folderów znajdują się pliki .pem, których użyjemy w następnym etapie.

Instalacja certyfikatu SSL w Apache2

Wygenerowaliśmy certyfikat który usprawni i zabezpieczy naszą witrynę. Teraz musimy tylko powiedzieć serwerowi WWW Apache aby skorzystał ze świeżo utworzonego zabezpieczenia.

Najpierw musimy włączyć moduł SSL. Zrobimy to za pomocą polecenia:

a2enmod ssl

Następnie musimy zmodyfikować plik /etc/apache2/sites-available/default-ssl.conf. Znajduje się tam domyślna konfiguracja Apache2 pod SSL. Jedyne zmiany jakie będziemy musieli wprowadzić będą dotyczyły ścieżki do certyfikatów. Zobaczmy, jak to powinno wyglądać.

SSL Konfiguracja Apache

Dodaliśmy linijki SSLCertificateFile, SSLCertificateKeyFile i SSLCertificateChainFile. Wszystkie wskazują na odpowiednie pliki wygenerowane przez Certbot od Let’s Encrypt.

To koniec podstawowej konfiguracji. Zapisz plik. Musimy teraz aktywować tę stronę. Aby to zrobić, wystarczy wydać polecenie:

a2ensite default-ssl.conf

Wyłączenie ruchu po http. Ustawienie przekierowania 301

Obecnie nasza witryna będzie dostępna w dwóch trybach. Będziemy mogli korzystać z niej w formie szyfrowanej (https) oraz nieszyfrowanej (http). Nie jest to satysfakcjonujące rozwiązanie. Oberwiemy za SEO (część może linkować do wersji http, część do https). Oberwiemy od użytkowników (część z nich, która weszła za pomocą linka zaczynającego się od http będzie widziała napis „Niezabezpieczona” w pasku adresu przeglądarki). Aby rozwiązać ten problem musimy sprawić, aby cały ruch http był odtąd automatycznie szyfrowany.

Są dwa sposoby na rozwiązanie tego problemu. Możemy stworzyć odpowiednie reguły .htaccess. Nie lubię się w tym bawić, dlatego pokażę prostsze rozwiązanie.

Musimy zmodyfikować plik /etc/apache2/sites-enabled/000-default.conf. Hashujemy (stawiamy znak # na początku) linijkę DocumentRoot. Pod spodem dopisujemy:

Redirect permanent "/" "https://www.kompikownia.pl/"

Plik konfiguracyjny powinien wyglądać tak:

Apache przekierowanie 301 http

Po tym wszystkim powinniśmy zrestartować serwer apache2 za pomocą komendy:

systemctl restart apache2.conf

Let’s Encrypt – Konfiguracja WordPressa – włączenie SSL

Aby WordPress poprawnie korzystał z szyfrowania SSL, musimy wprowadzić kilka zmian w panelu administracyjnym. Logujemy się do WordPressa i przechodzimy na zakładkę Ustawienia→Ogólne.

Konfiguracja wordpress https

Powyższy screen w zasadzie wyjaśnia wszystko. Musimy zmienić dwa pola: Adres WordPressa (URL) i Adres witryny (URL). W obydwu wypadkach musimy zamienić http na https.

Podsumowując

Pobranie certyfikatu SSL od Let’s Encrypt oraz jego instalacja na swojej stronie są bardzo opłacalnymi czynnościami. „Zielona kłódeczka” wpływa nie tylko na zachowanie użytkowników, którzy czują się bezpieczniej. Google będzie także lepiej postrzegał naszą witrynę, windując ją do góry w wynikach wyszukiwania. Nawet jeśli nie posiadamy formularzy rejestracji/logowania na stronie i tak warto wdrożyć szyfrowanie. Nie jest to trudna operacja. Certbot może załatwić za nas wszystkie formalności. Jeśli chcemy pobawić się ręcznie, nic nie stoi na przeszkodzie. Samodzielna instalacja certyfikatu SSL także nie jest trudna, a zapewnia nam pełną kontrolę nad tym, co dzieje się na serwerze.

Zapraszam do komentowania. Gdyby wkradły się jakieś nieścisłości, poinformuj o tym w komentarzu. Jeśli podobał ci się artykuł, polub profil kompikownia na Facebooku. Miłego dnia 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.