Jak skonfigurować samodzielny serwer Apache z wirtualnym hostingiem opartym na nazwach z certyfikatem SSL - Część 4

Jak skonfigurować samodzielny serwer Apache z wirtualnym hostingiem opartym na nazwach z certyfikatem SSL - Część 4

A Lfce (Krótkie dla Inżynier certyfikowanego Linux Foundation) jest wyszkolonym profesjonalistą, który ma wiedzę specjalistyczną do instalowania, zarządzania i rozwiązywania problemów z usługami sieciowymi w systemach Linux i jest odpowiedzialny za projektowanie, wdrażanie i ciągłe utrzymanie architektury systemu.

W tym artykule pokażemy, jak skonfigurować Apache, aby obsługiwać treści internetowe i jak konfigurować wirtualne hosty i SSL oparte na nazwach, w tym samowystarczalny certyfikat.

Certyfikowany inżynier Linux Foundation - część 4

Wprowadzenie programu certyfikacji Fundacji Linux (LFCE).

Notatka: Że ten artykuł nie powinien być kompleksowym przewodnikiem w sprawie Apache, ale raczej punktem wyjścia do samodzielnego nauki na ten temat Lfce egzamin. Z tego powodu nie obejmujemy równoważenia obciążenia apachem w tym samouczku.

Możesz już znać inne sposoby wykonywania tych samych zadań, czyli OK biorąc pod uwagę, że certyfikacja Fundacji Linux jest ściśle oparta na wydajności. Tak więc tak długo, jak ty 'zrobić robotę', masz duże szanse na zdanie egzaminu.

Wymagania

Należy zapoznać się Część 1 bieżącej serii („Instalowanie usług sieciowych i konfigurowanie automatycznego uruchamiania w BOOT”) w celu uzyskania instrukcji instalacji i uruchamiania Apache.

Do tej pory powinieneś mieć zainstalowany i uruchomiony serwer WWW Apache. Możesz to zweryfikować za pomocą następującego polecenia.

# ps -ef | grep -ei '(apache | httpd)' | grep -v grep 

Notatka: Że powyższe polecenie sprawdza obecność jednego z nich Apache Lub httpd (najczęstsze nazwy demona internetowego) wśród listy uruchomionych procesów. Jeśli Apache działa, otrzymasz wyjście podobne do następujących.

Sprawdź procesy Apache

Ostateczna metoda testowania instalacji Apache i sprawdzania, czy uruchomi się, jest uruchamianie przeglądarki internetowej i wskazuje na adres IP serwera. Powinniśmy mieć następujący ekran lub przynajmniej wiadomość potwierdzającą, że Apache działa.

Sprawdź stronę Apache

Konfigurowanie Apache

Główny plik konfiguracyjny dla Apache może znajdować się w różnych katalogach w zależności od dystrybucji.

/etc/apache2/apache2.conf [dla ubuntu]/etc/httpd/conf/httpd.CONF [dla centu]/etc/apache2/httpd.conf [dla openSuse] 

Na szczęście dla nas dyrektywy konfiguracyjne są wyjątkowo dobrze udokumentowane na stronie internetowej Project Apache. Będziemy odwołać się do niektórych z nich w tym artykule.

Obsłużenie stron na samodzielnym serwerze z Apache

Najbardziej podstawowym użyciem Apache jest obsługa stron internetowych na samodzielnym serwerze, na którym nie skonfigurowano żadnych wirtualnych hostów. DocumentRoot dyrektywa określa katalog, z którego Apache będzie obsługiwał dokumenty stron internetowych.

Zauważ, że domyślnie wszystkie żądania są pobierane z tego katalogu, ale możesz również użyć symbolicznych linków i / lub aliasów, aby wskazać również na inne lokalizacje.

Chyba że nie jest dopasowane przez Alias dyrektywa (która umożliwia przechowywanie dokumentów w lokalnym systemie plików zamiast w katalogu określonym przez DocumentRoot), serwer dołącza ścieżkę z żądanego adresu URL do głównego dokumentu, aby wykonać ścieżkę do dokumentu.

Na przykład, biorąc pod uwagę następujące DocumentRoot:

Apache DocumentRoot

Kiedy przeglądarka internetowa wskazuje na [IP serwera Lub Nazwa hosta]/LFCE/TECMINT.html, Serwer zostanie otwarty /var/www/html/lfce/tecmint.html (Zakładając, że taki plik istnieje) i zapisz zdarzenie w dzienniku dostępu za pomocą 200 (OK) odpowiedź.

Dziennik dostępu jest zazwyczaj znaleziony w środku /var/log pod reprezentatywną nazwą, taką jak dostęp.dziennik Lub access_log. Możesz nawet znaleźć ten dziennik (i dziennik błędów) w subdirectory (na przykład, /var/log/httpd w Centos). W przeciwnym razie nieudane zdarzenie będzie nadal zalogowane do dziennika dostępu, ale z 404 (Nie znaleziono) odpowiedź.

Dziennik dostępu Apache

Ponadto, nieudane zdarzenia będą rejestrowane w Dziennik błędów:

Dziennik błędów Apache

Format Dziennik dostępu można dostosować zgodnie z Twoimi potrzebami za pomocą Logformat dyrektywa w głównym pliku konfiguracyjnym, podczas gdy nie można zrobić tego samego z Dziennik błędów.

Domyślny format Dziennik dostępu następująco:

Logformat " %h %l %u %t \" %r \ "" %> s %b"" [pseudonim] 

Gdzie każda z liter poprzedzonych znakiem procentowym wskazuje serwer do rejestrowania określonej informacji:

Strunowy Opis
 %H  Zdalna nazwa hosta lub adres IP
 %l  Zdalna nazwa dziennika
 %u  Zdalny użytkownik, jeśli żądanie jest uwierzytelnione
 %T  Data i godzina, kiedy otrzymano żądanie
 %R  Pierwsza linia żądania serwera
 %> s  Ostateczny status żądania
 %B  Rozmiar odpowiedzi [bajty]

I przezwisko jest opcjonalnym aliasem, którego można użyć do dostosowania innych dzienników bez konieczności ponownego wprowadzania całego ciągu konfiguracji.

Możesz odnosić się do Logformat Dyrektywa [Sekcja formatów dziennika niestandardowego] w dokumentach Apache w celu uzyskania dalszych opcji.

Oba pliki dziennika (dostęp I błąd) reprezentują świetny zasób do szybkiej analizy na pierwszy rzut oka, co dzieje się na serwerze Apache. Nie trzeba dodawać, że są pierwszym narzędziem, którego administrator systemu używa do rozwiązywania problemów.

Wreszcie kolejną ważną dyrektywą jest Słuchać, który informuje serwer, aby przyjął żądania przychodzące w określonym kombinacji portu lub adresu/portu:

Jeśli zdefiniowano tylko numer portu, Apache zostanie słucha danego portu we wszystkich interfejsach sieciowych (znak wieloznaczny * służy do wskazania „wszystkich interfejsów sieciowych”).

Jeśli podano zarówno adres IP, jak i port, Apache będzie słuchać kombinacji podanego portu i interfejsu sieciowego.

Uwaga (jak zobaczysz w poniższych przykładach), że można jednocześnie użyć wielu dyrektyw do słuchania, aby określić wiele adresów i portów do słuchania. Ta opcja instruuje serwer, aby odpowiedział na żądania z dowolnego z wymienionych adresów i portów.

Konfigurowanie wirtualnych hostów opartych na nazwiskach

Pojęcie wirtualnego hosta definiuje poszczególną witrynę (lub domenę), która jest obsługiwana przez tę samą maszynę fizyczną. W rzeczywistości wiele witryn / domen może być podawane z jednego „prawdziwy„Serwer jako wirtualny host. Proces ten jest przejrzysty dla użytkownika końcowego, do którego wydaje się, że różne witryny są obsługiwane przez odrębne serwery Web.

Hosting wirtualny oparty na nazwach pozwala serwerowi polegać na kliencie zgłaszanie nazwy hosta jako części nagłówków HTTP. Tak więc, stosując tę ​​technikę, wiele różnych hostów może udostępniać ten sam adres IP.

Każdy wirtualny host jest skonfigurowany w katalogu wewnątrz DocumentRoot. W naszym przypadku użyjemy następujących manekinów do konfiguracji testowania, z których każda znajduje się w odpowiednim katalogu:

  1. Ilovelinux.com - /var/www/html/ilovelinux.com/public_html
  2. LinuxRocks.org - /var/www/html/linuxRocks.org/public_html

Aby strony były poprawnie wyświetlane, będziemy chmod Każdy katalog VirtualHost do 755:

# chmod -r 755/var/www/html/ilovelinux.com/public_html # chmod -r 755/var/www/html/linuxRocks.org/public_html 

Następnie utwórz próbkę indeks.html plik w każdym public_html informator:

  www.Ilovelinux.com   

To jest strona główna www.Ilovelinux.com

Wreszcie, w Centos I OpenSuse Dodaj następującą sekcję na dole /etc/httpd/conf/httpd.conf Lub /etc/apache2/httpd.conf, odpowiednio lub po prostu zmodyfikuj go, jeśli już tam jest.

 ServerAdmin [chroniony e -mail] DocumentRoot/var/www/html/iLovelinux.com/public_html Servername www.Ilovelinux.com serveralias www.Ilovelinux.com ilovelinux.com errorLog/var/www/html/iLovelinux.com/błąd.log logformat "" %v %l %u %t \"" %r \ "" %> s %b"" myvhost customLog/var/www/html/iLovelinux.com/dostęp.Log myvhost ServerAdmin [e -mail chroniony] DocumentRoot/var/www/html/linuxRocks.org/public_html Servername www.LinuxRocks.Org Serveralias www.LinuxRocks.Org LinuxRocks.org errorLog/var/www/html/linuxRocks.org/błąd.log logformat "" %v %l %u %t \"" %r \ "" %> s %b"" myvhost customLog/var/www/html/linuxrocks.org/dostęp.log myvhost  

Należy pamiętać, że możesz również dodać każdą wirtualną definicję hosta w osobnych plikach wewnątrz /etc/httpd/conf.D informator. Jeśli zdecydujesz się to zrobić, każdy plik konfiguracyjny musi być nazwany w następujący sposób:

/etc/httpd/conf.D/ILovelinux.com.conf/etc/httpd/conf.D/LinuxRocks.org.conf 

Innymi słowy, musisz dodać .conf do nazwy witryny lub domeny.

W Ubuntu, Każdy indywidualny plik konfiguracyjny jest nazwany /etc/apache2/Sites-Available/[Nazwa witryny].conf. Każda witryna jest następnie włączona lub wyłączona z A2ENSITE Lub A2dissite Polecenia odpowiednio w następujący sposób.

# A2EnSite/etc/apache2/Sites-dostępna/iLovelinux.com.conf # a2dissite/etc/apache2/witryny-dostępny/iLovelinux.com.conf # a2ensite/etc/apache2/witryny-dostępne/linuxRocks.org.conf # a2dissite/etc/apache2/witryny-dostępne/linuxRocks.org.conf 

A2ENSITE I A2dissite Polecenia tworzą łącza do wirtualnego pliku konfiguracyjnego hosta i umieść (lub usuń) je w /etc/apache2/witryny informator.

Aby móc przeglądać obie strony z innego pudełka Linux, musisz dodać następujące wiersze w /etc/hosts plik w tym komputerze w celu przekierowania żądań do tych domen na określony adres IP.

[Adres IP twojego serwera internetowego] www.Ilovelinux.com [adres IP twojego serwera internetowego] www.LinuxRocks.org 

Jako środek bezpieczeństwa, Selinux nie pozwole Apache pisać dzienniki do katalogu inne niż domyślne /var/log/httpd.

Możesz wyłączyć Selinux lub ustawić odpowiedni kontekst bezpieczeństwa:

# CHCON SYSTEM_U: Object_r: httpd_log_t: s0/var/www/html/xxxxxx/błąd.dziennik 

Gdzie xxxxxx jest katalogiem w środku /var/www/html gdzie zdefiniowałeś swoje wirtualne hosty.

Po ponownym uruchomieniu Apache powinieneś zobaczyć następującą stronę na powyższe adresy:

Sprawdź Apache VirtualHosts

Instalowanie i konfigurowanie SSL z Apache

Na koniec utworzymy i zainstalujemy Self-podpisany Certyfikat do użycia z Apache. Ten rodzaj konfiguracji jest dopuszczalny w małych środowiskach, takich jak prywatna LAN.

Jeśli jednak Twój serwer wystawi treść do świata zewnętrznego przez Internet, będziesz chciał zainstalować certyfikat podpisany przez stronę trzeciej, aby potwierdzić jego autentyczność. Tak czy inaczej, certyfikat pozwoli ci zaszyfrować informacje przesyłane do lub w Twojej witrynie.

W Centos I OpenSuse, musisz zainstalować mod_ssl pakiet.

# Yum Update && Yum Instaluj mod_ssl [on Centos] # Zypper Refresh && Zypper Zainstaluj mod_ssl [on OpenSuse] 

Podczas gdy w Ubuntu Będziesz musiał włączyć moduł SSL dla Apache.

# A2enmod SSL 

Poniższe kroki są wyjaśnione za pomocą Centos Serwer testowy, ale konfiguracja powinna być prawie identyczna w innych rozkładach (jeśli napotkasz jakiekolwiek problemy, nie wahaj się zostawić pytania za pomocą formularza komentarzy).

Krok 1 [Opcjonalnie]: Utwórz katalog, aby przechowywać swoje certyfikaty.

# mkdir/etc/httpd/ssl-CERTS 

Krok 2: Wygeneruj swój samokontrolowany certyfikat i klucz, który go chroni.

# OpenSsl req -x509 -nodes -Days 365 -Newkey RSA: 2048 -Keyout/etc/httpd/ssl -certs/apache.klucz -ut/etc/httpd/ssl -CERTS/APACHE.crt 

Krótkie wyjaśnienie opcji wymienionych powyżej:

  1. Req -x509 Wskazuje, że tworzymy certyfikat x509.
  2. -węzły (No des) oznacza „nie szyfruj klucza”.
  3. -Dni 365 to liczba dni, w których certyfikat będzie ważny.
  4. -Newkey RSA: 2048 tworzy 2048-bitowy klucz RSA.
  5. -Keyout/etc/httpd/ssl-certs/apache.klucz jest absolutną ścieżką klucza RSA.
  6. -OUT/ETC/HTTPD/SSL-CERTS/APACHE.crt jest bezwzględną ścieżką certyfikatu.
Utwórz certyfikat Apache SSL

Krok 3: Otwórz wybrany plik konfiguracyjny wirtualnego hosta (lub jego odpowiednia sekcja w /etc/httpd/conf/httpd.conf Jak wyjaśniono wcześniej) i dodaj następujące wiersze do wirtualnego deklaracji hosta słuchania w porcie 443.

SsLengine na SSLCertificateFile/etc/httpd/ssl-CERTS/Apache.crt sslcertificateKeKeyFile/etc/httpd/ssl-certs/apache.klucz 

Pamiętaj, że musisz dodać.

NameVirtualHost *: 443 

u góry, tuż poniżej

NameVirtualHost *: 80 

Obie dyrektywy instruują Apache, aby słuchał na portach 443 I 80 wszystkich interfejsów sieciowych.

Poniższy przykład jest pobierany z /etc/httpd/conf/httpd.conf:

Dyrektywy VirtualHost Apache

Następnie uruchom ponownie Apache,

# Service Apache2 restart [systemy oparte na Sysvinit i Upstart] # Systemctl restart httpd.serwis [systemy oparte na systemie] 

I skieruj przeglądarkę https: // www.Ilovelinux.com. Otrzymasz następujący ekran.

Sprawdź certyfikat Apache SSL

Śmiało i kliknij „rozumiem ryzyko"" I ""Dodaj wyjątek"".

Apache ceritfikuj ostrzeżenie

Na koniec sprawdź „Na stałe przechowuj ten wyjątek”I kliknij„Potwierdź wyjątek bezpieczeństwa"".

Dodaj ceritficate SSL

I zostaniesz przekierowany na swoją stronę główną za pomocą https.

Apache HTTPS Włączone

Streszczenie

W tym poście pokazaliśmy, jak skonfigurować Apache I Nazwa wirtualne hosting z SSL Aby zabezpieczyć transmisję danych. Jeśli z jakiegoś powodu napotkałeś jakiekolwiek problemy, daj nam znać, używając poniższego formularza komentarza. Z przyjemnością pomożemy Ci wykonać udaną konfigurację.

Przeczytaj także

  1. Apache oparte na IP i wirtualne hosting oparty na nazwach
  2. Tworzenie wirtualnych hostów Apache z opcjami Włącz/Wyłącz VHosts
  3. Monitoruj „Apache Web Server” za pomocą narzędzia „Apache GUI”
Zostań inżynierem certyfikowanym Linux"