Własny Serwer

Własny serwer – cz.3: certyfikat TSL/SSL

Ostatnia aktualizacja: 16 września 2023, 15:18



 
Trzecia część cyklu Własny Serwer poświęcona jest instalacji certyfikatu TSL/SSL.
W pierwszej części zainstalowaliśmy serwer www a w drugiej interpretator PHP oraz system bazodanowy.

Co to jest TSL/SSL ?
Z Wikipedii:

TLS (ang. Transport Layer Security) – przyjęte jako standard w Internecie rozwinięcie protokołu SSL (ang. Secure Socket Layer), zaprojektowanego pierwotnie przez Netscape Communications. TLS zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera, a niekiedy również klienta. Opiera się na szyfrowaniu asymetrycznym oraz certyfikatach X.509.

Po co instalować TSL/SSL?
Istnieje kilka powodów, dla których instalacja TSL jest konieczna, ja przytoczę zaledwie 3:
1. Bezpieczeństwo logowania do aplikacji webowych na Twoim serwerze – jeśli z logowania korzystasz tylko Ty, to szyfrowanie połączenia jest wymagane. Istnieją w sieci osoby, które skupiają się na przechwytywaniu danych i wykorzystują je do nielegalnych celów (zablokowanie dostępu do serwera, zaszyfrowanie Twoich danych, wymuszenie okupu, etc, etc.).
2. Bezpieczeństwo logowania Twoich użytkowników – to samo, co w punkcie 1, lecz dotyczy Twoich współpracowników, autorów, czytelników z dostępem do logowania. Ich bezpieczeństwo na Twoim serwerze to zasadnicza sprawa.
3. Zaszyfrowanie połączenia pomiędzy serwerem i urządzeniem klienckim (laptop, tablet, smartphone, desktop) powoduje, iż dane przesyłane między tymi sprzętami są nieczytelne dla ewentualnych podsłuchiwaczy oraz serwerów pośredniczących. Przykładowe wczytanie strony www z serwera wymaga wysłania zapytania z Twojej przeglądarki, a więc danych, które zwykle są nieszyfrowane. Jeśli strona www oferuje szyfrowanie, to pobranie danych (strony www) i każdego następnego zapytania odbywa się już w postaci zaszyfrowanej. Jedyne dane, jakie zostawiamy na serwerach pośredniczących to adres IP (aby to wyeliminować sugeruję użyć wirtualnej sieci prywatnej VPN).

Tak więc, przykładowo, logowanie do poczty lub innej aplikacji webowej bez szyfrowania, a więc przy użyciu protokołu HTTP (a nie HTTPS) odbywa się poprzez przesyłanie loginu i hasła w formie czystego tekstu, który można bez problemu odczytać.

Jaki zainstalować certyfikat?
Większość dostawców hostingowych oferuje płatne certyfikaty od firm, które tym się zajmują. Niektórzy dostawcy oferują również certyfikat bezpłatny, np. od Let’s Encrypt do automatycznej instalacji z poziomu panelu zarządzania serwerem. Niestety, nie wiem, który dostawca konkretnie (oprócz jednego) posiada taką opcję, więc nie będę się wypowiadał i sugeruję instalację protokołu samodzielnie.

Co to jest Let’s Encrypt?
Z Wikipedii:

Let’s Encrypt – urząd certyfikacji dostępny jako publiczny produkt od 12 kwietnia 2016 roku (beta od 3 grudnia 2015). Projekt dostarcza użytkownikom darmowe certyfikaty szyfrowania X.509 Transport Layer Security (TLS) w ramach zautomatyzowanego procesu stworzonego, aby wyeliminować wady ręcznego tworzenia, walidacji, podpisywania oraz instalacji certyfikatów dla bezpiecznych stron internetowych.

Instalacja
Instalacja certyfikatu może być wykonana na działającej domenie.
Do instalacji certyfikatu Let’s Encrypt służy, np. narzędzie 'certbot’.

Instalacja dla Apache:
apt install certbot python3-certbot-apache

W części pierwszej utworzyliśmy plik:
/etc/apache2/sites-available/000-default.conf
dzięki któremu udostępniliśmy stronę www przez protokół HTTP i port 80.

Teraz udostępnimy tę samą stronę przez protokół HTTPS i port 443.
Jeśli plik default istnieje w konfiguracji Apache, najpierw zrób jego kopię zapasową:
mv /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Następnie stwórz nową konfigurację:
nano /etc/apache2/sites-available/default-ssl.conf
dodając do powyższego pliku zawartość:
##### linuxiarze.pl #####
<IfModule mod_ssl.c>
        <VirtualHost *:443>
        ServerAdmin admin@linuxiarze.pl
        ServerName linuxiarze.pl
        ServerAlias www.linuxiarze.pl linuxiarze.pl
        DocumentRoot /var/www/linuxiarze.pl/private_html
        <Directory /var/www/linuxiarze.pl/private_html/>
        Options All Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error-linuxiarze-pl.log
        CustomLog ${APACHE_LOG_DIR}/access-linuxiarze-pl.log combined
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
        </Directory>
        </VirtualHost>
</IfModule>

Utwórz dowiązanie symboliczne:
ln -s /var/www/linuxiarze.pl/public_html /var/www/linuxiarze.pl/private_html

Przeładuj Apache:
systemctl restart apache2

Powyższa konfiguracja umożliwia otworzenie strony www na Twojej domenie przy użyciu HTTPS, lecz przeglądarka internetowa wyświetli błąd z certyfikatem; akceptując ryzyko możesz jednak wyświetlić swoją stronę z https.

Teraz zainstaluj certyfikat TSL:
certbot --apache -d linuxiarze.pl -d www.linuxiarze.pl

Powyższe polecenie zmieni wpisy SSLCertyficateFile i SSLCertyficateKeyFile w pliku default-ssl.conf na dostarczone od Let’s Encrypt.

Przeładuj Apache:
systemctl restart apache2

I odśwież stronę www, która powinna już działać z prawidłowym certyfikatem TSL.

Instalacja dla Nginx:
apt install certbot python3-certbot-nginx

W części pierwszej utworzyliśmy plik:
/etc/nginx/sites-available/default
dzięki któremu udostępniliśmy stronę www przez protokół HTTP i port 80.

Do zapisanej konfiguracji dodaj poniżej dodatkową:
server {
        listen 443 ssl http2;
        server_name linuxiarze.pl www.linuxiarze.pl;
        root /var/www/linuxiarze.pl/private_html;
        index index.php index.html index.htm;
        ssl_certificate /etc/ssl/certs/apache-selfsigned.crt;
        ssl_certificate_key /etc/ssl/private/apache-selfsigned.key;
        location /
        {
        try_files $uri $uri/ =404;
        }
}

Utwórz dowiązanie symboliczne:
ln -s /var/www/linuxiarze.pl/public_html /var/www/linuxiarze.pl/private_html

Przeładuj Nginx:
systemctl restart nginx

Powyższa konfiguracja umożliwia otworzenie strony www na Twojej domenie przy użyciu HTTPS, lecz przeglądarka internetowa wyświetli błąd z certyfikatem; akceptując ryzyko możesz jednak wyświetlić swoją stronę z https.

Teraz zainstaluj certyfikat TSL:
certbot --nginx -d linuxiarze.pl -d www.linuxiarze.pl

Powyższe polecenie zmieni wpisy ssl_certificate i ssl_certificate_key w pliku default na dostarczone od Let’s Encrypt.

Przeładuj Nginx:
systemctl restart nginx

I odśwież stronę www, która powinna już działać z prawidłowym certyfikatem TSL.

Ważne !
Pamiętaj, że certyfikat od Let’s Encrypt jest przyznawany tylko na 3 miesiące. Przed upływem tego czasu trzeba go odnowić.

Ręczne odnowienie certyfikatu wszystkich zarejestrowanych domen
Odnowienie certyfikatu Let’s Encrypt dla Apache:
certbot renew --apache

Odnowienie certyfikatu Let’s Encrypt dla Nginx:
certbot renew --nginx

Automatyczne odnawianie certyfikatu
Proces odnawiania certyfikatu można zautomatyzować i przekazać do crona.
Upewnij się, że cron jest zainstalowany i aktywny:
apt update
apt install cron
systemctl status cron

Jeśli nie jest aktywny, to:
systemctl enable cron
systemctl start cron

Teraz dodaj nowe zadanie cron-a – zostanie uruchomione (przykładowo) raz w miesiącu, 1 dnia miesiąca o godz. 23.10:
crontab -e
Dla Apache:
10 23 1 * * certbot -q renew --apache
Dla Nginx:
10 23 1 * * certbot -q renew --nginx

W przypadku problemów lub niejasności odsyłam do stron man-a:
man certboot
man cron

Na tym zakończyliśmy część trzecią serii Własny Serwer, w części czwartej zainstalujemy i skonfigurujemy serwer FTP.

Click to rate this post!
[Total: 0 Average: 0]

3 komentarze do “Własny serwer – cz.3: certyfikat TSL/SSL

  • To Pavroo szacun. Masz głowę. Ja lubię informatykę, ale nie aż tak :-). Dobrze zlecać takie zadania specjalistom. Najlepiej mieć kolegów, żeby w miarę pewnym być. Z drugiej strony z tak jak Ty opracowałeś instrukcją krok po kroku z pewnością łatwiej.
    Pozdrawiam!

    Odpowiedz
  • Dobra robota! To pokazuje jak skomplikowane to trochę. Pytanie ile jeszcze części.
    A zweryfikować też jakoś sobie wypada. Żmudne. Dobrze, że tacy ludzie to kawę na ławę wyłożą.

    Odpowiedz

Skomentuj pavroo Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.