Kako postaviti samostalni Apache poslužitelj s virtualnim hostingom temeljenim na imenu sa SSL certifikatom - 4. dio


LFCE (kratica za Linux Foundation Certified Engineer ) je obučeni stručnjak koji ima stručnost za instaliranje, upravljanje i rješavanje problema mrežnih usluga u Linux sustavima i zadužen je za dizajn, implementacija i kontinuirano održavanje arhitekture sustava.

U ovom ćemo vam članku pokazati kako konfigurirati Apache za posluživanje web sadržaja i kako postaviti virtualne hostove i SSL temeljene na imenima, uključujući samopotpisani certifikat.

Predstavljamo vam Linux Foundation Certification Program (LFCE).

Napomena: Da ovaj članak ne bi trebao biti sveobuhvatan vodič o Apacheu, već polazište za samostalno proučavanje ove teme za ispit LFCE . Iz tog razloga ni u ovom uputstvu ne pokrivamo balansiranje opterećenja s Apacheom.

Možda već znate druge načine za izvršavanje istih zadataka, što je u redu s obzirom na to da se certifikat Linux Foundation strogo temelji na izvedbi. Dakle, sve dok ‘ obavite posao ’, imate dobre šanse za polaganje ispita.

Upute o instaliranju i pokretanju Apachea potražite u 1. dijelu trenutne serije ("Instaliranje mrežnih usluga i konfiguriranje automatskog pokretanja pri pokretanju sustava").

Do sada biste trebali instalirati i pokrenuti web poslužitelj Apache. To možete provjeriti sljedećom naredbom.

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

Napomena: Da gornja naredba provjerava prisutnost apache ili httpd (najčešća imena web demona) na popisu pokrenutih procesa. Ako je Apache pokrenut, dobit ćete izlaz sličan sljedećem.

Konačna metoda testiranja instalacije Apachea i provjere radi li pokretanje web preglednika i usmjeravanje na IP poslužitelja. Trebao bi nam se predstaviti sljedeći zaslon ili barem poruka koja potvrđuje da Apache radi.

Konfiguriranje Apachea

Glavna konfiguracijska datoteka za Apache može se nalaziti u različitim direktorijima, ovisno o vašoj distribuciji.

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

Na našu sreću, konfiguracijske su smjernice izuzetno dobro dokumentirane na web mjestu projekta Apache. Kroz ovaj ćemo se članak osvrnuti na neke od njih.

Najosnovnija upotreba Apachea je posluživanje web stranica na samostalnom poslužitelju na kojem još nisu konfigurirani virtualni hostovi. Direktiva DocumentRoot određuje direktorij iz kojeg će Apache posluživati dokumente web stranica.

Imajte na umu da se prema zadanim postavkama svi zahtjevi preuzimaju iz ovog direktorija, ali također možete koristiti simboličke veze i/ili pseudonime koji se mogu koristiti i za usmjeravanje na druga mjesta.

Osim ako se ne podudara s direktivom Alias (koja omogućuje pohranu dokumenata u lokalni datotečni sustav, umjesto u direktorij naveden u DocumentRoot ), poslužitelj dodaje stazu iz traženog URL-a do korijena dokumenta kako bi napravili put do dokumenta.

Na primjer, s obzirom na sljedeće DocumentRoot :

Kada web preglednik pokaže na [ IP poslužitelja ili ime hosta ] /lfce/tecmint.html , poslužitelj će se otvoriti /var/www/html/lfce/tecmint.html (pod pretpostavkom da takva datoteka postoji) i spremite događaj u svoj pristupni dnevnik s odgovorom 200 ( OK ).

Zapisnik pristupa obično se nalazi unutar /var/log pod reprezentativnim imenom, kao što je access.log ili access_log . Ovaj ćete zapisnik (i zapisnik o pogreškama također možda pronaći) pronaći u poddirektoriju (na primjer, /var/log/httpd u CentOS-u). Inače, neuspjeli događaj i dalje će se bilježiti u pristupni dnevnik, ali s odgovorom 404 (nije pronađeno).

Osim toga, neuspjeli događaji zabilježit će se u zapisniku pogrešaka :

Format dnevnika pristupa može se prilagoditi vašim potrebama pomoću LogFormat direktive u glavnoj konfiguracijskoj datoteci, dok to ne možete učiniti s zapisnikom pogrešaka .

Zadani format dnevnika pristupa je sljedeći:

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

Gdje svako od slova kojima prethodi znak postotaka označava poslužitelj da zabilježi određeni podatak:

a nadimak je neobavezni zamjenski naziv koji se može koristiti za prilagodbu ostalih dnevnika bez ponovnog unosa cijelog konfiguracijskog niza.

Dodatne opcije možete potražiti u direktivi LogFormat [odjeljak Prilagođeni formati dnevnika] u Apache dokumentima.

Obje datoteke dnevnika ( pristup i pogreška ) izvrsni su resurs za brzu analizu onoga što se događa na Apache poslužitelju. Nepotrebno je reći da su oni prvi alat koji administrator sustava koristi za rješavanje problema.

Konačno, druga važna direktiva je Slušaj , koja kaže poslužitelju da prihvati dolazne zahtjeve na navedenom spoju luka ili adrese/porta:

Ako je definiran samo broj porta, apache će preslušati zadani port na svim mrežnim sučeljima (zamjenski znak * koristi se za označavanje "svih mrežnih sučelja").

Ako su navedena i IP adresa i port, tada će apache preslušati kombinaciju datog porta i mrežnog sučelja.

Imajte na umu (kao što ćete vidjeti u primjerima u nastavku) da se više smjernica za preslušavanje može istodobno koristiti za određivanje više adresa i priključaka za preslušavanje. Ova opcija upućuje poslužitelj da odgovori na zahtjeve s bilo koje od navedenih adresa i priključaka.

Postavljanje virtualnih hostova temeljenih na imenima

Koncept virtualnog hosta definira pojedinačnu stranicu (ili domenu) koju opslužuje isti fizički stroj. Zapravo, više web lokacija/domena može se posluživati s jednog "stvarnog " poslužitelja kao virtualni domaćin. Ovaj je postupak transparentan krajnjem korisniku kojem se čini da različite web stranice poslužuju različiti web poslužitelji.

Virtualni hosting zasnovan na imenima omogućuje poslužitelju da se oslanja na klijenta da prijavi ime hosta kao dio HTTP zaglavlja. Stoga, koristeći ovu tehniku, mnogi različiti domaćini mogu dijeliti istu IP adresu.

Svaki virtualni domaćin konfiguriran je u direktoriju unutar DocumentRoot . Za naš ćemo slučaj koristiti sljedeće lažne domene za postavljanje testiranja, a svaka se nalazi u odgovarajućem direktoriju:

  1. ilovelinux.com - /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org - /var/www/html/linuxrocks.org/public_html

Kako bi se stranice pravilno prikazale, chmod ćemo direktorij svakog VirtualHost-a na 755 :

# chmod -R 755 /var/www/html/ilovelinux.com/public_html
# chmod -R 755 /var/www/html/linuxrocks.org/public_html

Zatim stvorite uzorak datoteke index.html unutar svakog direktorija public_html :

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

Konačno, u CentOS i openSUSE dodajte sljedeći odjeljak na dnu /etc/httpd/conf/httpd.conf ili /etc/apache2/httpd.conf , ili ga jednostavno izmijenite ako je već tamo.

<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

Imajte na umu da svaku definiciju virtualnog hosta možete dodati i u zasebne datoteke unutar direktorija /etc/httpd/conf.d . Ako to odlučite, svaka konfiguracijska datoteka mora biti imenovana kako slijedi:

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

Drugim riječima, na naziv web mjesta ili domene morate dodati .conf .

U Ubuntuu svaka pojedinačna konfiguracijska datoteka naziva se /etc/apache2/sites-available/[naziv web stranice] .conf . Tada se svaka web lokacija omogućava ili onemogućuje naredbama a2ensite ili a2dissite , kako slijedi.

# a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
# a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
# a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
# a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

Naredbe a2ensite i a2dissite stvaraju veze do datoteke konfiguracije virtualnog hosta i postavljaju ih (ili uklanjaju) u /etc/apache2/sites-enabled direktorij.

Da biste mogli pregledavati obje web stranice iz drugog okvira Linuxa, morat ćete dodati sljedeće retke u datoteku /etc/hosts na tom stroju kako biste preusmjeravali zahtjeve na te domene na određenu IP adresu adresa.

[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

Kao sigurnosnu mjeru, SELinux neće dopustiti Apacheu da zapisuje zapisnike u direktorij koji nije zadani/var/log/httpd.

Možete ili onemogućiti SELinux ili postaviti pravi sigurnosni kontekst:

# chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

gdje je xxxxxx direktorij unutar/var/www/html gdje ste definirali svoje virtualne hostove.

Nakon ponovnog pokretanja Apachea, trebali biste vidjeti sljedeću stranicu na gornjim adresama:

Instaliranje i konfiguriranje SSL-a s Apacheom

Napokon, stvorit ćemo i instalirati samopotpisan certifikat za upotrebu s Apacheom. Ova vrsta postavljanja prihvatljiva je u malim okruženjima, poput privatnog LAN-a.

Međutim, ako će vaš poslužitelj izložiti sadržaj vanjskom svijetu putem Interneta, morat ćete instalirati certifikat potpisan od strane treće strane da bi se potvrdila njegova autentičnost. U svakom slučaju, certifikat će vam omogućiti šifriranje podataka koji se prenose na, sa ili unutar vašeg web mjesta.

U CentOS i openSUSE morate instalirati paket mod_ssl .

# yum update && yum install mod_ssl 		[On CentOS]
# zypper refresh && zypper install mod_ssl	[On openSUSE]

Dok ćete u Ubuntuu morati omogućiti ssl modul za Apache.

# a2enmod ssl

Sljedeći koraci objašnjeni su pomoću testnog poslužitelja CentOS , ali vaša postavka trebala bi biti gotovo identična u ostalim distribucijama (ako naiđete na bilo kakve probleme, ne ustručavajte se ostavljati svoja pitanja pomoću komentara oblik).

Korak 1 [nije obavezno] : Stvorite direktorij za pohranu vaših certifikata.

# mkdir /etc/httpd/ssl-certs

Korak 2 : Izradite svoj samopotpisani certifikat i ključ koji će ga zaštititi.

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

Kratko objašnjenje gore navedenih opcija:

  1. req -X509 označava da stvaramo x509 certifikat.
  2. -nodes (NO DES) znači "ne šifriraj ključ".
  3. dana 365 broj je dana u kojima će certifikat vrijediti.
  4. -newkey rsa: 2048 stvara 2048-bitni RSA ključ.
  5. -keyout /etc/httpd/ssl-certs/apache.key je apsolutni put RSA ključa.
  6. -out /etc/httpd/ssl-certs/apache.crt je apsolutni put certifikata.

Korak 3 : Otvorite odabranu konfiguracijsku datoteku virtualnog hosta (ili odgovarajući odjeljak u /etc/httpd/conf/httpd.conf kako je ranije objašnjeno) i dodajte sljedeće retke u virtualna deklaracija domaćina koja sluša na priključku 443 .

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

Napominjemo da morate dodati.

NameVirtualHost *:443

na vrhu, točno ispod

NameVirtualHost *:80

Obje direktive upućuju apache da sluša na priključcima 443 i 80 svih mrežnih sučelja.

Sljedeći je primjer preuzet iz /etc/httpd/conf/httpd.conf :

Zatim ponovno pokrenite Apache,

# service apache2 restart 			[sysvinit and upstart based systems]
# systemctl restart httpd.service 		[systemd-based systems]

I usmerite svoj preglednik na https://www.ilovelinux.com . Prikazat će se sljedeći zaslon.

Samo naprijed i kliknite na " Razumijem rizike " i " Dodaj iznimku ".

Na kraju, označite " Trajno pohrani ovu iznimku " i kliknite " Potvrdi sigurnosnu iznimku ".

I bit ćete preusmjereni na svoju početnu stranicu pomoću https .

Sažetak

U ovom smo postu pokazali kako konfigurirati Apache i na temelju imena virtualni hosting sa SSL za osiguranje prijenosa podataka. Ako ste iz nekog razloga naišli na bilo koji problem, slobodno nas obavijestite putem obrasca za komentar u nastavku. Bit će nam više nego drago da vam pomognemo u uspješnom postavljanju.

Pročitajte i

  1. Virtualni hosting temeljen na Apache IP-u i imenu
  2. Stvaranje Apache virtualnih hostova s Omogući/Onemogući opcije Vhosts
  3. Nadgledajte "Apache web poslužitelj" pomoću alata "Apache GUI"