Konfiguracja HTTPS (SSL/TLS) z użyciem Let's Encrypt
1. Co to za wykład i dlaczego to jest ważne
W dzisiejszym świecie HTTPS to już standard dla wszystkich stron internetowych. Jeśli chcesz, aby twoi użytkownicy czuli się bezpiecznie, a Google nie obniżał twojej strony w rankingu wyszukiwarek (tak, HTTPS wpływa na SEO), po prostu musisz skonfigurować SSL/TLS. Protokół HTTPS chroni dane przesyłane między użytkownikiem a serwerem poprzez szyfrowanie, co uniemożliwia ich przechwycenie przez osoby trzecie.
W tym wykładzie krok po kroku omówimy, jak za darmo podłączyć HTTPS do twojego serwera internetowego za pomocą Let's Encrypt. Let's Encrypt to zaufane centrum certyfikacji (CA), które oferuje darmowe certyfikaty i narzędzia do ich instalacji. Nauczymy się również automatycznie odnawiać nasze certyfikaty, aby uniknąć problemów związanych z ich wygaśnięciem.
HTTP vs HTTPS
HTTP (Hypertext Transfer Protocol) — to protokół przesyłania danych. Jest w porządku do przeglądania memów o kotach, ALE! Jeśli ktoś podłączy się do twojej sieci Wi-Fi (na przykład w kawiarni), będzie mógł przechwytywać dane, które wysyłasz na serwer (koszmar, twoje hasło stanie się "ich hasłem").
HTTPS (Hypertext Transfer Protocol Secure) — to wersja HTTP z dodanym szyfrowaniem. Dane przesyłane między klientem a serwerem są chronione za pomocą SSL/TLS (Secure Sockets Layer / Transport Layer Security). Osoby trzecie nie będą mogły zobaczyć zawartości "pakietów" danych, nawet jeśli uda im się je przechwycić.
2. Instalacja Let's Encrypt i Certbot
Certbot to narzędzie od twórców Let's Encrypt, które pozwala łatwo uzyskać i skonfigurować certyfikaty SSL dla twojego serwera sieciowego. Jest na tyle sprytny, że sam potrafi współpracować z Nginx lub Apache, wykonując za nas całą ciężką pracę. Zaczynamy od instalacji.
Instalacja Certbot
Upewnij się, że twój serwer jest zaktualizowany:
sudo apt-get update
sudo apt-get upgrade
Teraz zainstalujemy Certbot i jego wtyczki:
Dla Nginx:
sudo apt-get install certbot python3-certbot-nginx
Dla Apache:
sudo apt-get install certbot python3-certbot-apache
Sam Certbot to po prostu kod napisany w Pythonie, aktywnie wspierany przez społeczność. Łatwo integruje się z większością serwerów.
3. Pobieranie certyfikatu SSL za pomocą Certbot
Dla Nginx
Certbot może automatycznie skonfigurować HTTPS dla Twojej strony, jeśli używasz Nginx. Wpisz:
sudo certbot --nginx
Certbot przeskanuje Twoje aktualne wirtualne hosty (server
bloki w konfiguracji). Zapyta, dla jakiej domeny chcesz skonfigurować HTTPS. Upewnij się, że domena wskazuje na Twój serwer w DNS (na przykład za pomocą rekordu A).
Przykładowy wynik:
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wybierz swoją domenę (na przykład 1).
Certbot automatycznie skonfiguruje konfigurację Nginx i sprawdzi ją. Po pomyślnym zakończeniu instalacji zobaczysz komunikat w stylu:
Congratulations! Your certificate and chain have been saved ...
Teraz Twoja strona jest dostępna przez HTTPS. Możesz to sprawdzić, otwierając https://example.com w przeglądarce.
Dla Apache
Jeśli używasz Apache, komenda będzie nieco inna:
sudo certbot --apache
Certbot również przeskanuje Twoje wirtualne hosty (<VirtualHost>
bloki) i zaproponuje konfigurację HTTPS dla wybranych domen. Wybierz odpowiednie domeny i Certbot zrobi wszystko za Ciebie.
Po zakończeniu procesu ponownie zobaczysz komunikat gratulacyjny i będziesz mógł zweryfikować dostępność swojej strony przez HTTPS.
4. Automatyczne odnawianie certyfikatów
Certyfikaty Let's Encrypt są ważne tylko przez 90 dni, więc trzeba je regularnie odnawiać. Certbot może to robić automatycznie, ale musimy upewnić się, że wszystko jest dobrze skonfigurowane.
Sprawdzanie daty ważności certyfikatów
Możesz sprawdzić, kiedy wygasa Twój certyfikat:
sudo certbot certificates
Wynik pokaże Twoje domeny i datę wygaśnięcia ich certyfikatów.
Konfiguracja automatycznego odnawiania
Podczas instalacji Certbot automatycznie dodaje zadanie do Crona lub Systemd Timer, aby sprawdzać aktualizacje. Jeśli chcesz upewnić się, że wszystko działa, dodaj testowe zadanie w Crone:
sudo crontab -e
Dodaj linię:
0 0 * * * certbot renew --quiet
Ta komenda sprawdza i odnawia certyfikaty codziennie o północy. Klucz --quiet
wyłącza wyświetlanie niepotrzebnych informacji.
Ręczne odnawianie
Jeśli chcesz ręcznie odnowić certyfikaty (na przykład do testów), użyj:
sudo certbot renew
5. Włączanie automatycznego przekierowania HTTP → HTTPS
Twoja strona wciąż może być dostępna przez HTTP, ale to nie jest bezpieczne. Skonfigurujmy automatyczne przekierowanie wszystkich zapytań do HTTPS.
Dla Nginx
Certbot może automatycznie skonfigurować przekierowanie przy wydawaniu certyfikatu. Jeśli nie włączyłeś tego wcześniej, dodaj przekierowanie ręcznie do pliku konfiguracyjnego wirtualnego hosta:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Zrestartuj Nginx, aby zastosować zmiany:
sudo systemctl restart nginx
Dla Apache
Certbot również oferuje włączenie przekierowań automatycznie. Jeśli pominąłeś ten krok, dodaj do swojego pliku wirtualnego hosta:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
Zrestartuj Apache:
sudo systemctl restart apache2
6. Debugowanie błędów
Jeśli coś poszło nie tak, zacznij od sprawdzenia logów:
Dla Nginx
sudo tail -f /var/log/nginx/error.log
Dla Apache
sudo tail -f /var/log/apache2/error.log
Testowanie konfiguracji
Sprawdź również konfigurację serwera sieciowego:
Dla Nginx:
sudo nginx -t
Dla Apache:
sudo apachectl configtest
Sprawdzanie HTTPS
Upewnij się, że Twoja strona jest dostępna przez HTTPS:
curl -I https://example.com
Powinieneś zobaczyć status 200 OK
i linię Strict-Transport-Security
, co oznacza, że HTTPS działa.
Teraz jesteś gotowy na tworzenie bezpiecznych, chronionych stron HTTPS. Twoi użytkownicy będą zadowoleni, Google też, a Ty będziesz spał spokojnie, wiedząc, że Twoje dane są chronione przed złoczyńcami internetu.
GO TO FULL VERSION