Jak skonfigurować SSL/TLS z Apache HTTPD na Red Hat

Jak skonfigurować SSL/TLS z Apache HTTPD na Red Hat

Cel

Celem jest skonfigurowanie serwerów Apache Webserver z obsługą SSL/TLS na Red Hat Linux, za pomocą pakietów dostarczanych z dystrybucją.

Wersje systemu operacyjnego i oprogramowania

  • System operacyjny: Red Hat Enterprise Linux 7.5
  • Oprogramowanie: Apache httpd, mod_ssl

Wymagania

Uprzywilejowany dostęp do serwera internetowego.

Trudność

ŁATWY

Konwencje

  • # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Biorąc pod uwagę polecenia Linux, które mają być wykonywane jako zwykły użytkownik niepewny

Wstęp

Instalowanie serwera internetowego jest dość łatwe dla nowoczesnych dystrybucji, ponieważ przypadki użycia serwera Web. Apache HTTPD to niezawodny serwer WebS używany przez dużą część Internetu, a wiele modułów jest dostępnych do rozszerzenia jego funkcjonalności.

Wiadomości technologiczne są w dzisiejszych czasach naruszenia bezpieczeństwa, kradzież/wyciek danych i rosnącą potrzebę korzystania z szyfrowania
gdzie to możliwe. Podczas gdy korzystanie z HTTPS ma określone koszty ogólne zarówno po stronie serwera, jak i klienta, nie korzystanie z niego oznacza, że ​​wszystkie dane wysyłane w obu kierunkach to wyraźny tekst, czytelny przez każdego, kto jest w stanie odczytać ruch, podczas gdy przechodzi do sieci.

Załóżmy, że masz usługę internetową, w której klienci mogą zalogować się za pomocą nazwy użytkownika i hasła - wspólnej metody uwierzytelniania - w celu osiągnięcia własnych danych, w tym administratorów witryny. Jeśli zapewnisz tę usługę przez HTTP, wszystkie te informacje można zarejestrować, aby ktoś mógł uzyskać wszystkie poświadczenia logowania, zalogować się jako administrator witryny i zablokować prawdziwych administratorów lub opublikować treści szkodliwe dla odwiedzających.

Możliwość korzystania z szyfrowania podczas przeglądania jest wbudowana dla wszystkich głównych nowoczesnych przeglądarek przez długi czas, a w ten sam sposób szyfrowanie jest dostępne dla serwisów internetowych od wielu lat.



Zainstaluj serwer Webserver Apache z obsługą SSL/TLS

Aby zainstalować wymagane pakiety, po prostu uruchom jako root:

# Yum Zainstaluj httpd mod_ssl -y

Jeśli serwer ma już zainstalowany HTTPD, musisz tylko zainstalować mod_ssl, Cała wymagana konfiguracja jest gotowa
przez instalatora. Należy jednak zauważyć, że w tym przypadku musisz ponownie uruchomić HTTPD, aby mógł załadować moduł SSL. Używając
Pakiety dostarczone w dystrybucji możemy znacznie ułatwić naszemu życiu, ponieważ Red Hat zapewni odpowiednio przetestowane aktualizacje zarówno dla systemu operacyjnego, jak i serwera internetowego, oczywiście potrzebujesz subskrypcji do odtworzenia aktualizacji - ale aktualizacje są potrzebne do dla System operacyjny i tak być na bieżąco.

Włącz i uruchom serwer HTTPD

Za pomocą SystemD możesz włączyć i uruchomić WebServer z poniższym poleceniem:

# Systemctl Włącz httpd && Systemctl start httpd

W ten sposób usługa HTTPD zostanie automatycznie uruchomiona przez SystemD przy każdym rozruchu.

Sprawdź instalację i status

Możesz sprawdzić status serwera internetowego za pomocą SystemD:

# Status Systemctl HTTPD -L ● HTTPD.Usługa - załadowany serwer Apache HTTP: załadowany (/usr/lib/systemd/system/httpd.praca; włączony; PREDET PRETOR: Wyłączony) Active: Active (Uruchamianie) od soboty 2018-07-07 21:35:33 Cest; 1 tygodnie 4 dni temu Dokumenty: Człowiek: Httpd (8) Mężczyzna: Apachectl (8) Główny PID: 1292 (HTTPD) Status: „Całkowite żądania: 0; bieżące żądania/Sek. : 9 cgroup: /system.Slice/httpd.Service ├─ 1292/usr/sbin/httpd -dforeground ├─13271/usr/sbin/httpd -dforeground ├─13272/usr/sbin/httpd -dforeground ├─13273/usr/sbin/httpd -dforeground /sbin/httpd -dforeground ├─27509/usr/sbin/httpd -dforeground ├─27510/usr/sbin/httpd -dforeground ├─27511/usr/sbin/httpd -dforeground └─27512/usr/sbin/httpd -dimegred 07 lipca 21:35:32 Web.foobar.Com Systemd [1]: Uruchamianie serwera Apache HTTP… . 07 lipca 21:35:33 Web.foobar.Com Systemd [1]: Uruchom serwer Apache HTTP. 
Kopiuj

Aby sprawdzić, że mod_ssl jest poprawnie zainstalowany:

# rpm -q mod_ssl mod_ssl -2.4.6-80.El7.x86_64 
Kopiuj

I jest ładowany jako moduł do serwera HTTPD:

# apachectl -m | GREP SSL SSL_Module (udostępniony) 
Kopiuj

Zastosowanie certyfikatu

Po zainstalowaniu pakietu MOD_SSL moduł dodaje się do serwera HTTPD, więc załaduje go na następnym uruchomieniu.
Domyślnie wygenerowany jest certyfikat samodzielny, który służy do ustanowienia zaszyfrowanego połączenia z przeglądarką.
Otwórz przeglądarkę i wskaż ją na serwer przez HTTPS:

Komunikat o błędzie SSL w przeglądarce Firefox

Zignorujmy to na razie, dodaj wyjątek bezpieczeństwa (nie ustawiaj „trwale przechowuj ten wyjątek”) i kontynuuj. Wyświetlona strona domyślna. W przypadku Red Hat wygląda na to:

Domyślna strona główna HTTPD Webserver Instaluj na Red Hat Linux

Zwróć uwagę na wykrzyknik obok adresu URL (inne przeglądarki mogą wykazywać inne ostrzeżenie).

Nasz serwer Web
pod /var/www/html, Domyślny główny źródło treści na Red Hat.

Połączenie między serwerami sieciowymi a przeglądarką jest teraz szyfrowane, więc trudniej jest sfałszować ruch (który
można użyć, na przykład kradzież poświadczenia logowania). Skończyliśmy? W pewnym sensie osiągnęliśmy nasz cel.

Fakt, że nasza przeglądarka nie może zidentyfikować certyfikatu serwera jako ważnego, nie uniemożliwia mu korzystania z zaszyfrowanej komunikacji z serwerem, jeśli wyraźnie zdecydujemy, że ufamy temu certyfikatowi. Może to być odpowiednie dla małego (domowego) systemu, w którym masz tylko kilku użytkowników, a także tylko kilka serwisów internetowych - musisz zaakceptować samowystarczalny certyfikat w przeglądarkach, które powinny być klientami serwisów internetowych, oraz wszelkich innych Przeglądarka na świecie nie powinna nigdy widzieć treści dostarczonych przez te serwery.

Należy jednak zauważyć, że ten samowystarczalny certyfikat wygasa na czas (jak powinien powinien być każdy inny certyfikat), a będziesz mieć
Aby go odnowić, aby go użyć. Wygasłe certyfikaty są uważane za nieprawidłowe przez przeglądarki, w taki sam sposób, jak certyfikaty, których nie można udowodnić, że jest ważny przez ważny łańcuch certyfikatów nad nimi.

Aby dowiedzieć się, kiedy wygaśnie samowystarczalny (lub jakikolwiek inny) certyfikat, musimy go znaleźć w systemie plików, konsultując się z plik konfiguracyjnym modułu SSL:

# grep sslcertificateFile/etc/httpd/conf.D/SSL.Conf | grep -v "#" sslcertificateFile/etc/pki/tls/certs/localhost.crt 
Kopiuj

A następnie użyj OpenSSL, aby uzyskać datę ważności:

# Openssl x509 -enddate -Noout -in/etc/pki/tls/certs/localhost.CRT Notafter = 10 lipca 07:06:17 2019 GMT 
Kopiuj

Po (a raczej, przed) wygaśnięciem certyfikatu, musisz je odnowić lub zastąpić certyfikatem, które zaufanie klientów. A
Bardziej eleganckie podejście w przeciwieństwie do certyfikatów samodzielnych jest żądanie i korzystanie z certyfikatu z CA
(Urząd certyfikacji) Twoi klienci już ufają, albo z twojego wewnętrznego CA (co z kolei może mieć globalny
zaufany korzeń CA nad nim) lub bezpośrednio z globalnie zaufanego CA.

Aby użyć uzyskanego certyfikatu zamiast domyślnego, poniższe parametry muszą wskazywać na plik certyfikatu,
Klucz certyfikatu i certyfikat CA, który podpisał odpowiednio certyfikat SSL. Pliki należy skopiować
Webserver i musi być czytelny przez użytkownika systemu operacyjnego uruchamiającego WebServer - w przypadku domyślnej instalacji Red Hat, użytkownik Apache. Te parametry można znaleźć w wyżej wymienionych SSL.conf.

SslCertificateFile/etc/httpd/custom-cert/server-ssl.crt sslcertificateKeyFile/etc/httpd/custom-cert/server-ssl.Klucz sslcacertificateFile/etc/httpd/custom-cert/ca.crt 


Przekierowanie ruchu HTTP do HTTPS

Teraz, gdy obsługujemy HTTPS, możemy egzekwować wykorzystanie HTTPS, jednocześnie służąc całości lub części. W naszym
przykład, jesteśmy bardzo bezpieczni i używamy HTTP tylko do przekierowania przychodzących klientów do HTTPS.

Może pojawić się pytanie, jeśli chcemy mówić tylko HTTPS, dlaczego w ogóle słuchamy HTTP? Załóżmy, że użytkownik końcowy, który właśnie usłyszał o naszej witrynie i dostał adres URL od znajomego, który nie zawiera protokołu. Do dziś większość przeglądarek domyślnie na protokole HTTP, jeśli nie zostanie określony jawnie. Jeśli przestaniemy służyć przez HTTP, użytkownik wpisujący adres URL bez HTTP otrzyma komunikat o błędzie, jeśli jego przeglądarka spróbuje dotrzeć do naszego serwera przez HTTP.

Aby przekierować wszystkie przychodzące żądania HTTP do HTTPS, tworzymy plik poniżej /etc/httpd/conf.D Powiedzmy o opisowej nazwie, Redirect_http.conf z następującą zawartością (gdzie Web.foobar.com to nazwa witryny DNS):

 Servername Web.foobar.com przekieruj stałe/https: // Web.foobar.com/  

I uruchom ponownie serwer Web. Możemy przetestować, czy przekierowanie działa poprawnie z wiersza polecenia z WGET (z hosta, który ufa certyfikatu SSL WebServer):

$ wget http: //.foobar.com/--2018-07-19 16: 13: 01-- http: //.foobar.com/ rozwiązywanie sieci.foobar.com (sieć.foobar.com)… . 10.9.8.7 Łączenie z Internetem.foobar.com (sieć.foobar.com) | 10.9.8.7 |: 80… . połączony. Wysłany prośba HTTP, czekając na odpowiedź… . 301 Przeniesiony na stałe Lokalizacja: https: // Web.foobar.com/[następujące] --2018-07-19 16: 13: 01-- https: // Web.foobar.com/ łączenie się do sieci.foobar.com (sieć.foobar.com) | 10.9.8.7 |: 443… . połączony. Wysłany prośba HTTP, czekając na odpowiedź… . 200 OK Długość: 240 [Text/HTML] Zapisywanie na: 'indeks.html '100%[==================================================================================================================== ======================================>] 240 --.-K/S w 0S 2018-07-19 16:13:01 (7.04 MB/s) - „Indeks.HTML „ZAPIĘTA [240/240] 
Kopiuj

Wyjście pokazuje odpowiedź HTTP 301 i możemy zobaczyć, jak nasz klient WGET śledzi przekierowanie, aby połączyć się za pomocą protokołu HTTPS. Domyślnie ruch SSL jest rejestrowany w różnych plikach dziennika, a następnie ruch HTTP. Możemy znaleźć powyżej
żądanie zalogowane /var/log/httpd/ssl_access_log:

10.9.8.8 - - [19 lipca/2018: 16: 13: 01 +0200] "GET/HTTP/1.1 "200 240

Wniosek

Dzięki temu ukończyliśmy nasz cel, skonfigurowaliśmy serwer Web, który używa HTTPS do rozmowy z klientami, i przekierowaliśmy przychodzące żądania HTTP również do HTTPS.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Pobierz Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Najlepszy Linux Distro dla programistów
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • GNU/Linux Ogólne Przewodnik po rozwiązywaniu problemów dla początkujących
  • MX Linux vs Ubuntu