Zabezpieczenie serwera Apache za pomocą certyfikatu SSL/TLS.
Po prawidłowym wdrożeniu certyfikatu, Twoja domena lub adres IP będą osiągalne poprzez protokół HTTPS, zapewniając bezpieczne połączenie.
Przejdźmy zatem do konkretów.
W dużym uproszczeniu, proces ten składa się z kilku kluczowych kroków:
- Skompilowanie serwera Apache HTTP w wersji 2.4.5 z włączonym modułem SSL.
- Pozyskanie certyfikatu SSL.
- Odpowiednia konfiguracja serwera Apache do obsługi protokołu SSL.
Instalacja Apache z Obsługą SSL ze Źródła
Aby serwer Apache mógł obsługiwać połączenia SSL, konieczne jest skompilowanie go z modułem mod_ssl. Dla celów demonstracyjnych, użyję maszyny wirtualnej CentOS 7, hostowanej przez Digital Ocean.
- Zaloguj się do serwera Linux jako root i pobierz najnowszą wersję Apache.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
Uwaga: Sprawdź najnowszą wersję na stronie pobierania Apache.
- Rozpakuj pobrany plik za pomocą polecenia gunzip.
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- Po rozpakowaniu powstanie nowy katalog o nazwie „httpd-2.4.25”.
- Przejdź do tego katalogu i wykonaj polecenie konfiguracji:
./configure --enable-ssl –-enable-so
Uwaga: Na nowym serwerze możesz napotkać problemy z zależnościami APR, PCRE i OpenSSL. W takim przypadku zapoznaj się z przewodnikami dotyczącymi rozwiązywania problemów.
Upewnij się, że polecenie configure nie zwróciło żadnych błędów. Następnie wykonaj instalację za pomocą polecenia make.
make make install
Sprawdź, czy powyższe polecenia nie wygenerowały żadnych błędów. Jeśli wszystko przebiegło pomyślnie, serwer Apache z obsługą SSL został zainstalowany.
Uzyskanie Certyfikatu SSL
Istnieje kilka metod na wygenerowanie i pozyskanie certyfikatu SSL podpisanego przez zaufany urząd certyfikacji.
Jeżeli wdrażasz SSL w środowisku intranetowym, większość organizacji dysponuje wewnętrznym zespołem odpowiedzialnym za wystawianie certyfikatów. Skontaktuj się z nimi. Niemniej jednak, nadal będziesz musiał wygenerować CSR (żądanie podpisania certyfikatu). Możesz to zrobić za pomocą narzędzia OpenSSL.
W sytuacji, gdy chcesz zabezpieczyć adres URL dostępny z Internetu, możesz nabyć certyfikat od komercyjnych dostawców takich jak VeriSign, GoDaddy, Namecheap, ZeroSSL, lub uzyskać certyfikat BEZPŁATNIE od projektu Let’s Encrypt.
Let’s Encrypt, jako projekt Linux Foundation, oferuje darmowe certyfikaty SSL/TLS. W tym poradniku, użyję właśnie tej metody, aby wygenerować certyfikat dla mojej domeny – Chandan.io.
Istnieje kilka sposobów na utworzenie CSR, jednak najprostszym, który znam, jest użycie narzędzia online „SSL FOR FREE„.
Wprowadź adres URL, który chcesz zabezpieczyć.
Zweryfikuj własność domeny za pomocą jednej z udostępnionych metod, a następnie pobierz pliki certyfikatów dla Twojej domeny.
Otrzymasz trzy pliki, których użyjemy w procesie konfiguracji serwera Apache:
- klucz – Jest to Twój plik klucza prywatnego, który powinien być traktowany jako poufny.
- Certyfikat – Twój aktualny certyfikat SSL dla domeny.
- Ca_bundle – Certyfikat główny lub pośredni urzędu certyfikacji.
Prześlij pobrane pliki na serwer. Będą nam potrzebne w kolejnym kroku.
Konfiguracja Apache SSL
Ostatnim etapem jest konfiguracja serwera Apache, tak aby obsługiwał żądania przez protokół HTTPS.
- Zaloguj się do serwera Apache.
- Wykonaj kopię zapasową pliku httpd.conf (standardowa ścieżka: /usr/local/apache2/conf/).
- Otwórz plik w edytorze tekstu (np. vi). Upewnij się, że moduł mod_ssl i linijka odwołująca się do pliku httpd-ssl.conf są obecne i nie są zakomentowane.
LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf
Szczegóły dotyczące certyfikatu zostaną skonfigurowane w pliku httpd-ssl.conf. Upewnij się, że w pliku są następujące parametry:
- SSLCertificateFile – Ścieżka do pliku certyfikatu (CRT), pobranego wcześniej.
- SSLCertificateKeyFile – Ścieżka do pliku klucza prywatnego (private.key).
- SSLCertificateChainFile – Ścieżka do pliku ca_bundle.crt.
Wskazówka: Możesz utworzyć nowy folder „ssl” i tam przechowywać wszystkie pliki związane z certyfikatami.
- Wykonaj kopię zapasową pliku httpd-ssl.conf i zmodyfikuj go za pomocą edytora vi.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt" SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Następnie skonfiguruj dyrektywę „ServerName”. Zwykle jest to adres Twojej domeny lub URL.
ServerName chandan.io
- Zapisz wprowadzone zmiany i uruchom ponownie serwer Apache.
cd /usr/local/apache2/bin ./apachectl stop ./apachectl start
Na koniec upewnij się, że Twoja domena jest prawidłowo przypisana do skonfigurowanego adresu IP serwera. Po dokonaniu tych zmian, spróbuj uzyskać dostęp do swojej strony za pomocą protokołu HTTPS.
Jak widać, domena Chandan.io jest dostępna poprzez protokół HTTPS i zabezpieczona certyfikatem, który właśnie skonfigurowaliśmy.
Przedstawione kroki to fundament konfiguracji SSL. Konfigurację można dalej optymalizować i wzmacniać bezpieczeństwo, o czym wspominam w innym artykule. Dodatkowo, przed wdrożeniem zmian, zalecam przetestowanie certyfikatu SSL/TLS serwera, aby uniknąć potencjalnych luk w zabezpieczeniach.
Mam nadzieję, że ten poradnik pomógł Ci zrozumieć, jak wdrożyć certyfikat SSL na serwerze Apache, umożliwiając dostęp do witryny przez bezpieczne połączenie HTTPS.
Czy ten artykuł był pomocny? Jeśli tak, zachęcam do udostępnienia go innym!
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.