Zabezpieczenie serwera WWW Apache za pomocą certyfikatu Let's Encrypt ma kluczowe znaczenie dla ochrony Twojej witryny i danych. Ten przewodnik przeprowadzi Cię przez ten proces w Debianie 12 Bookworm, Debianie 11 Bullseye i Debianie 10 Buster. Nacisk położony jest tutaj na wdrożenie solidnych środków bezpieczeństwa przy jednoczesnym uproszczeniu złożoności często związanych z zarządzaniem serwerami.
Kluczowe zalety używania Let's Encrypt z Apache w Debianie:
- Opłacalne: Let's Encrypt oferuje bezpłatne certyfikaty SSL, dzięki czemu wysoki poziom bezpieczeństwa jest dostępny dla każdego.
- Automatyczne odnowienia: Funkcje automatyzacji Let's Encrypt upraszczają uzyskiwanie i odnawianie certyfikatów SSL, zmniejszając ryzyko luk w zabezpieczeniach.
- Rozszerzona ochrona: Certyfikaty SSL firmy Let's Encrypt zapewniają silne szyfrowanie przesyłanych danych, zwiększając ogólne bezpieczeństwo Twojego serwera Apache w Debianie.
- Szeroka kompatybilność: Większość nowoczesnych przeglądarek internetowych rozpoznaje certyfikaty Let's Encrypt, zapewniając płynną obsługę.
- Proaktywne środki bezpieczeństwa: Dzięki regularnym aktualizacjom i rygorystycznym zasadom Let's Encrypt stanowi niezawodną linię obrony przed różnymi zagrożeniami cybernetycznymi.
Postępując zgodnie z tym przewodnikiem, dowiesz się, jak zabezpieczyć serwer Apache w Debianie za pomocą Let's Encrypt, podnosząc bezpieczeństwo i niezawodność usług sieciowych. Czekaj na szczegółowe instrukcje dotyczące osiągnięcia tej niezbędnej konfiguracji zabezpieczeń.
Zainstaluj Certbota dla Apache
W tej sekcji skupimy się na instalowaniu Certbota dla Apache w systemie Linux opartym na Debianie. Certbot to potężne narzędzie, które upraszcza uzyskiwanie i konfigurowanie certyfikatów SSL z Let's Encrypt. Działa ramię w ramię z Apache, umożliwiając włączenie protokołu HTTPS na serwerach.
Zaktualizuj repozytoria pakietów Debiana przed instalacją Certbot dla Apache
Przed zainstalowaniem Certbota ważne jest, aby upewnić się, że repozytoria pakietów i istniejące pakiety w systemie Debian są zaktualizowane. Aktualizowanie systemu gwarantuje zainstalowanie najnowszej wersji Certbota i zależności. Wykonaj następujące polecenia, aby zaktualizować repozytoria pakietów i zaktualizować istniejące pakiety:
sudo apt update
sudo apt upgrade
Zainstaluj Certbot i wtyczkę Apache
Teraz, gdy Twój system Debian jest aktualny, następnym krokiem jest instalacja Certbota wraz z wtyczką Apache. Wtyczka Apache jest niezbędna, ponieważ umożliwia Certbotowi interakcję z Apache, automatyzację uzyskiwania i odnawiania certyfikatów oraz konfigurowanie Apache do ich używania. Uruchom następujące polecenie, aby zainstalować zarówno Certbota, jak i wtyczkę Apache:
sudo apt install certbot python3-certbot-apache
Konfigurowanie certyfikatu Apache i Let's Encrypt
W tej sekcji przeprowadzimy Cię przez konfigurację Apache i wygenerowanie certyfikatu Let's Encrypt SSL dla Twojej domeny za pomocą Certbota. Omówimy także zastosowanie różnych opcji poprawiających bezpieczeństwo konfiguracji Twojego serwera.
Konfiguracja Certbota i generowanie certyfikatu SSL na Apache z Debianem
Po zainstalowaniu Certbota i wtyczki Apache następną czynnością jest uruchomienie Certbota w celu wygenerowania certyfikatu SSL dla Twojej domeny. Polecenie zawiera kilka opcji optymalizacji bezpieczeństwa.
Oto zestawienie zastosowanych opcji:
--apache
: Określa, że używanym serwerem WWW jest Apache.--agree-tos
: oznacza, że zgadzasz się z warunkami korzystania z usługi Let's Encrypt.--redirect
: konfiguruje stałe przekierowanie 301 z HTTP na HTTPS, zapewniając, że cały ruch jest szyfrowany.--hsts
: Dodaje nagłówek Strict-Transport-Security w celu wymuszenia bezpiecznych połączeń.--staple-ocsp
: Włącza zszywanie OCSP, zwiększając wydajność negocjacji SSL przy jednoczesnym zachowaniu prywatności użytkownika.--email
: To jest adres e-mail, na który będziesz otrzymywać powiadomienia związane z Twoim certyfikatem SSL, takie jak przypomnienia o odnowieniu i alerty bezpieczeństwa.
Zastępować you@example.com
z Twoim prawdziwym adresem e-mail i yourdomain.com
z nazwą Twojej domeny. Wykonaj następujące polecenie:
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com
Po pomyślnym wykonaniu Certbot wygeneruje certyfikat SSL dla Twojej domeny, skonfiguruje Apache do jego używania i zastosuje określone opcje bezpieczeństwa. Twój serwer będzie teraz bezpieczny, a Twoja witryna będzie dostępna za pośrednictwem protokołu HTTPS.
Alternatywna metoda konfiguracji Certbota z Apache
Dla tych, którzy wolą bardziej ukierunkowane i interaktywne podejście, Certbot zapewnia alternatywną metodę, która wyświetla monit o podanie informacji i opcji konfiguracji. Oto jak korzystać z tej metody:
Uruchom następujące polecenie:
sudo certbot --apache
Certbot zainicjuje sesję interaktywną. Poniżej znajduje się opis komunikatów, które możesz napotkać:
- Wpisz adres e-mail (używany do pilnych powiadomień o odnowieniu i bezpieczeństwie): Podaj swój adres e-mail. Let's Encrypt użyje tego do komunikowania się o Twoich certyfikatach.
- Zaakceptuj warunki korzystania z usługi Let's Encrypt: Zostaniesz poproszony o wyrażenie zgody na warunki korzystania z usługi. Wprowadź A, aby wyrazić zgodę.
- Udostępnij swój e-mail fundacji Electronic Frontier Foundation, aby uzyskać aktualne informacje na temat jej pracy: Jeśli chcesz wesprzeć EFR, wpisz Y, aby wyrazić zgodę. W przeciwnym razie wpisz N dla nr.
- Dla jakich nazw chcesz aktywować HTTPS: Certbot wyświetli nazwy domen, dla których może wystawiać certyfikaty. Wprowadź liczby odpowiadające Twoim domenom lub pozostaw je puste dla wszystkich.
- Wybierz odpowiednią akcję: Będziesz mieć możliwość:
- 1: Spróbuj ponownie zainstalować certyfikat
- 2: Odnów i wymień certyfikat (limit ~5 na 7 dni)
- Wybierz opcję odpowiadającą Twoim potrzebom.
- Wybierz, czy chcesz przekierowywać ruch HTTP do HTTPS: Zostaniesz zapytany, czy chcesz przekierować ruch HTTP do HTTPS. Jest to zalecane w przypadku większości witryn internetowych:
- 1: Brak przekierowania – nie wprowadzaj dalszych zmian w konfiguracji serwera WWW.
- 2: Przekieruj – przekieruj wszystkie żądania w celu bezpiecznego dostępu HTTPS.
- Wybierz opcję 2, aby zapewnić większe bezpieczeństwo.
Po wykonaniu wszystkich monitów i zakończeniu procesu Certbot wyświetli komunikat podobny do wspomnianego, wskazując lokalizację plików certyfikatu i dalsze informacje.
Automatyzacja odnawiania certyfikatu SSL za pomocą Cron
W tej sekcji skonfigurujemy automatyczny proces odnawiania Twoich certyfikatów SSL przy użyciu Cron, wbudowanego harmonogramu zadań w systemach opartych na systemie Linux. Certyfikaty Let's Encrypt SSL mają ważność 90 dni i konieczne jest ich odnowienie przed wygaśnięciem, aby uniknąć przerw w świadczeniu usług. Certbot udostępnia polecenie odnawiania certyfikatów, a my możemy to zadanie zautomatyzować za pomocą Cron.
Próba odnowienia certyfikatu
Przed zautomatyzowaniem procesu odnawiania kluczowe znaczenie ma upewnienie się, że polecenie odnowienia działa zgodnie z oczekiwaniami. Możemy to zrobić wykonując próbę próbną, która symuluje proces odnowienia bez zmiany certyfikatów. Uruchom następujące polecenie, aby zainicjować próbę próbną:
sudo certbot renew --dry-run
Planowanie automatycznego odnawiania certyfikatów
Jeśli próba przebiegnie bez błędów, możemy zaplanować automatyczne odnawianie certyfikatów. Będziemy używać Crona do uruchamiania polecenia odnowienia o określonej godzinie każdego dnia.
Najpierw otwórz plik crontab w trybie edycji, używając następującego polecenia:
sudo crontab -e
Na końcu pliku dodaj następujący wiersz, aby zaplanować codzienną kontrolę odnowienia o 2:30:
30 2 * * * /usr/bin/certbot renew --quiet
The --quiet
Opcja zapewnia, że proces odnawiania będzie przebiegał w tle, bez generowania żadnych wyników, chyba że wystąpi błąd.
Po dodaniu tej linii zapisz i zamknij plik. Skonfigurowałeś teraz automatyczny proces odnawiania certyfikatów SSL. Cron będzie codziennie sprawdzał, czy jakieś certyfikaty wymagają odnowienia i odnawia je w razie potrzeby. Dzięki temu Twój serwer Apache zawsze korzysta z ważnych certyfikatów SSL, utrzymując bezpieczne połączenie użytkownika.
Ulepsz konfigurację Apache SSL
W tej sekcji zoptymalizujemy wydajność Twojego serwera Apache, modyfikując jego konfigurację SSL. Obejmuje to skonfigurowanie certyfikatów SSL, włączenie protokołu HTTP/2, wdrożenie protokołu HTTP Strict Transport Security (HSTS) oraz konfigurację protokołów i szyfrów SSL. Ta konfiguracja wymaga modułów Apache mod_ssl
, mod_socache_shmcb
, mod_rewrite
, I mod_headers
.
Edytuj plik konfiguracyjny Apache
Aby rozpocząć, musisz uzyskać dostęp do pliku konfiguracyjnego swojej domeny w Apache. Wykonaj następujące polecenie:
sudo nano /etc/apache2/sites-available/your_domain.conf
Spowoduje to otwarcie pliku konfiguracyjnego Twojej domeny w edytorze tekstu o nazwie Nano. Po wejściu wprowadź następujące zmiany w bloku VirtualHost.
Przekieruj HTTP na HTTPS
Najpierw skonfigurujemy regułę przekierowującą cały ruch HTTP do HTTPS, zapewniając bezpieczeństwo wszystkich połączeń z Twoim serwerem. Ta reguła wyklucza żądania do .well-known/acme-challenge/
katalog, który jest używany przez Certbota do walidacji domeny podczas procesu wydawania certyfikatu. Dodaj następującą konfigurację w pliku <VirtualHost *:80>
blok:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
Włącz SSL i określ certyfikaty
Następnie w ramach <VirtualHost *:443>
block, włączymy SSL i określimy ścieżki do Twojego certyfikatu SSL i klucza prywatnego:
SSLEngine on
SSLCertificateFile /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile /path/to/private_key
Zastępować /path/to/signed_cert_and_intermediate_certs
ze ścieżką do pliku certyfikatu SSL oraz /path/to/private_key
ze ścieżką do pliku klucza prywatnego.
Włącz HTTP/2
Aby poprawić wydajność, włączymy protokół HTTP/2, jeśli będzie dostępny:
Protocols h2 http/1.1
Wdrażaj HSTS
Dodamy także nagłówek Strict-Transport-Security, aby wymusić bezpieczne połączenia:
Header always set Strict-Transport-Security "max-age=63072000"
Skonfiguruj protokoły i szyfry SSL
Następnie określimy, jakich protokołów i szyfrów SSL należy używać, aby zapewnić wysokie bezpieczeństwo i kompatybilność:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder off
SSLSessionTickets off
Włącz zszywanie OCSP
Na koniec włączymy zszywanie OCSP, funkcję poprawiającą wydajność negocjacji SSL przy jednoczesnym zachowaniu prywatności odwiedzających:
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Sprawdź i zastosuj zmiany
Gdy skończysz, zapisz i zamknij plik. Koniecznie sprawdź poprawność konfiguracji Apache, aby upewnić się, że nie ma błędów składniowych. Uruchom to polecenie, aby sprawdzić:
sudo apachectl configtest
Jeśli nie ma żadnych problemów, zastosuj zmiany, ponownie ładując Apache:
sudo systemctl restart apache2
Wniosek
W całym tym artykule zagłębiliśmy się w zabezpieczanie Apache za pomocą certyfikatów Let's Encrypt SSL w Debianie 10, 11 i 12. Podkreśliliśmy znaczenie certyfikatów SSL w zapewnianiu bezpiecznej komunikacji pomiędzy serwerami i klientami. Zaczynając od instalacji Certbota, zastanawialiśmy się, jak uzyskać bezpłatny certyfikat SSL od Let's Encrypt. Omówiliśmy także konfigurację Apache pod kątem korzystania z certyfikatu SSL, automatyzację procesu odnawiania za pomocą zadań cron i wzmacnianie bezpieczeństwa poprzez konfigurację Apache.
Ostatecznym zaleceniem jest monitorowanie dzienników i regularne aktualizowanie systemu. Praktyki te zapewnią, że będziesz informowany o potencjalnych problemach i że Twój serwer będzie chroniony przed najnowszymi lukami w zabezpieczeniach.