Konfiguracja serwera apache z kupionym certyfikatem

Będąc szczęśliwymi posiadaczami certyfikatu, zapewne chcielibyśmy go zainstalować na serwerze 🙂 (jeżeli nie wiesz jak go zdobyć, zobacz poprzedni artykuł dotyczący tworzenia certyfikatu). Tutaj niestety nie ma prostego i unikalnego sposobu. W przypadku hostingu współdzielonego nie mamy w ogóle wyboru. Jeśli hosting daje nam taką możliwość (czasami wymaga to droższego konta albo dokupienia takowej opcji), możemy dokonać tego w panelu administracyjnym hostingu (np. popularny DirectAdmin, Cpanel). W przypadku serwera VPS czy też serwera dedykowanego możemy skonfigurować nas serwer na kilka sposobów.

Jeśli nie przewidujemy dużego ruchu, a jednocześnie nie chcemy być zależni od hostingów, wystarczy nam serwer apache z obsługą http oraz https. W przypadku kiedy wiemy, że nasza strona będzie musiała obsłużyć duży ruch oraz chcemy wdrożyć HA, lecz nie chcemy za dużo inwestować, warto zainteresować się wtedy innym rozwiązaniem. Najlepiej posłużyć się HAProxy jako loadbalacer, nginx jako backend i frontend (programiści jednak rozumieją pod tymi pojęciami coś innego).

Zacznijmy jednak od najprostszej konfiguracji i zarazem najczęściej spotykanej na hostingach. Jedyne, czego tu potrzebujemy, to serwera apache oraz plików z kluczem prywatnym, publicznym oraz łańcucha certyfikatów. Jeżeli te pojęcia Ci nic nie mówią, zachęcam do przeczytania mojego poprzedniego artykułu. Nie chcę tutaj wnikać w konfigurację PHP czy MySQL. Jest to na tyle obszerny temat, że zasługuje na osobny artykuł (i pewnie niedługo się taki pojawi 🙂 ).

Konfigurację zaczynamy od czystego serwera z systemem operacyjnym Debian 9. Mamy na nim tylko SSH. Aby zainstalować wymagane pakiety wykonujemy polecenie

apt-get install apache2

Domyślnie HTTPS nie jest włączony. Aby włączyć moduł do obsługi HTTPS należy wykonać polecenie

a2enmod ssl

Trzeba tutaj wytłumaczyć do czego służą porty TCP 80 oraz 443. Obecnie wpisując w przeglądarkę adres URL (czyli np. mariusz.giat.pl) domyślnym protokołem jest HTTP, który nasłuchuje na porcie 80. Jest to protokół nieszyfrowany i m.in. Google dąży do tego, aby w całości zastąpić go protokołem HTTPS. Ponieważ chcemy, aby strona działała wyłącznie po HTTPS musimy zrobić przekierowanie z portu 80 (HTTP) na 443 (HTTPS). Najprościej zrobić to za pomocą tzw. vhost. Za jego pomocą definiujemy każdą stronę (domenę). Przy czym trzeba wziąć pod uwagę, że HTTP oraz HTTPS to tak naprawdę 2 różne strony (dwa osobne vhosty, dwie różne definicje).

W przypadku definicji portu 80 (http) mamy proste przekierowanie.

W tym celu tworzymy plik z rozszerzeniem .conf w katalogu /etc/apache2/sites-available o zawartości

<VirtualHost *:80>
ServerName domain.tld
Redirect / https://domain.tld
</VirtualHost>

W tym samym lub osobnym pliku dopisujemy konfiguracje dla wersji HTTPS (port 443)

<VirtualHost *:443>
ServerName domain.tld
DocumentRoot /home/web/domain.tld/public_html

Options -Indexes FollowSymLinks
AllowOverride All
Require all granted

SSLEngine on
SSLCertificateFile /etc/ssl/domain.crt
SSLCertificateKeyFile /etc/ssl/domain.key
SSLCertificateChainFile /etc/ssl/domain-chain.crt

</VirtualHost>

DocumentRoot oraz dyrektywa Directory musi wskazywać ścieżkę, gdzie nasza strona jest umieszczona na serwerze, a domain.tld należy zastąpić nazwą naszej domeny.

Aby dodać naszą konfigurację do aktywnych stron musimy wykonać polecenie

a2ensite domain

gdzie domain to nazwa naszego pliku konfiguracyjnego bez rozszerzenia.

Aby sprawdzić czy nasza konfiguracja jest poprawna możemy wykonać polecenie

apachectl configtest

Jeżeli status jest OK możemy zrestartować apache za pomocą polecenia

service apache2 restart

Od teraz powinniśmy się cieszyć naszą stroną z piękną zieloną kłódeczką oraz szyfrowanym połączeniem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Scroll to top