Kako postaviti samostalni Apache server s virtualnim hostingom zasnovanim na nazivu sa SSL certifikatom - 4. dio


LFCE (skraćenica od Linux Foundation Certified Engineer) je obučeni profesionalac koji ima stručnost za instaliranje, upravljanje i rješavanje problema mrežnih usluga u Linux sistemima, i zadužen je za dizajn, implementaciju i tekuće održavanje arhitekture sistema.

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

Predstavljamo Linux Foundation Certification Program (LFCE).

Napomena: da ovaj članak ne bi trebao biti sveobuhvatan vodič za Apache, već prije početna tačka za samostalno učenje o ovoj temi za LFCE ispit. Iz tog razloga ni u ovom vodiču ne pokrivamo balansiranje opterećenja sa Apacheom.

Možda već znate druge načine za obavljanje istih zadataka, što je OK s obzirom na to da je certifikat Linux Foundation striktno zasnovan na performansama. Stoga, sve dok 'obavljate posao', imate dobre šanse da položite ispit.

Zahtjevi

Molimo pogledajte 1. dio tekuće serije (“Instaliranje mrežnih usluga i konfiguriranje automatskog pokretanja pri pokretanju”) za upute o instalaciji i pokretanju Apache-a.

Do sada biste trebali imati instaliran i pokrenut Apache web server. Ovo možete provjeriti sljedećom komandom.

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

Napomena: da gornja komanda provjerava prisustvo ili apache ili httpd (najčešći nazivi za web daemon) na listi pokrenutih procesa. Ako je Apache pokrenut, dobit ćete izlaz sličan sljedećem.

Krajnji način testiranja Apache instalacije i provjere da li radi je pokretanje web pretraživača i ukazivanje na IP servera. Trebalo bi da nam se prikaže sljedeći ekran ili barem poruka koja potvrđuje da Apache radi.

Konfigurisanje Apache-a

Glavna konfiguraciona datoteka za Apache može se nalaziti u različitim direktorijumima u zavisnosti od vaše distribucije.

/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 direktive su izuzetno dobro dokumentirane na web stranici projekta Apache. U ovom članku ćemo se osvrnuti na neke od njih.

Posluživanje stranica na samostalnom serveru sa Apacheom

Najosnovnija upotreba Apache-a je posluživanje web stranica na samostalnom serveru gdje još uvijek nije konfigurisan virtuelni host. DocumentRoot direktiva specificira direktorij iz kojeg će Apache posluživati dokumente web stranica.

Imajte na umu da se po defaultu svi zahtjevi preuzimaju iz ovog direktorija, ali možete koristiti i simboličke veze i/ili pseudonime se mogu koristiti i za upućivanje na druge lokacije.

Osim ako se ne podudara s Alias direktivom (koja dozvoljava dokumentima da budu pohranjeni u lokalnom sistemu datoteka umjesto u direktoriju specificiranom od DocumentRoot), server dodaje putanju sa traženog URL-a do korijena dokumenta da napravite putanju do dokumenta.

Na primjer, s obzirom na sljedeći DocumentRoot:

Kada web pretraživač pokaže na [IP servera ili ime hosta]/lfce/tecmint.html, server će otvoriti /var/ www/html/lfce/tecmint.html (pod pretpostavkom da takva datoteka postoji) i sačuvajte događaj u dnevnik pristupa sa odgovorom 200 (OK).

Dnevnik pristupa se obično nalazi unutar /var/log pod reprezentativnim imenom, kao što je access.log ili access_log. Možete čak pronaći ovaj dnevnik (i dnevnik grešaka) unutar poddirektorijuma (na primjer, /var/log/httpd u CentOS-u). U suprotnom, neuspjeli događaj će i dalje biti zabilježen u pristupnoj evidenciji, ali sa odgovorom 404 (Nije pronađeno).

Osim toga, neuspjeli događaji će biti zabilježeni u logu grešaka:

Format dnevnika pristupa može se prilagoditi prema vašim potrebama korištenjem LogFormat direktive u glavnoj konfiguracijskoj datoteci, dok isto ne možete učiniti sa dnevnikom grešaka .

Zadani format dnevnika pristupa je sljedeći:

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

Gdje svako od slova kojem prethodi znak procenta označava server da evidentira određenu informaciju:

String

Opis

 %h

 Udaljeno ime hosta ili IP adresa

 %l

 Naziv udaljenog dnevnika

 %u

 Udaljeni korisnik ako je zahtjev autentificiran

 %t

 Datum i vrijeme kada je zahtjev primljen

 %r

 Prvi red zahtjeva za server

 %>s

 Konačni status zahtjeva

 %b

 Veličina odgovora [bajtova]

i nadimak je opcioni pseudonim koji se može koristiti za prilagođavanje drugih dnevnika bez ponovnog unosa cijelog niza konfiguracije.

Za dodatne opcije možete pogledati LogFormat direktivu [Prilagođeni formati dnevnika] u Apache dokumentima.

Obje datoteke evidencije (pristup i greška) predstavljaju odličan resurs za brzu analizu onoga što se dešava na Apache serveru. Nepotrebno je reći da su oni prvi alat koji administrator sistema koristi za rješavanje problema.

Konačno, još jedna važna direktiva je Slušaj, koja govori serveru da prihvati dolazne zahtjeve na specificiranom portu ili kombinaciji adrese/porta:

Ako je definiran samo broj porta, apache će osluškivati dati port na svim mrežnim sučeljima (džoker znak * se koristi za označavanje 'svih mrežnih sučelja').

Ako su specificirani i IP adresa i port, apache će slušati kombinaciju datog porta i mrežnog interfejsa.

Imajte na umu (kao što ćete vidjeti u primjerima ispod) da se višestruke Listen direktive mogu koristiti u isto vrijeme za specificiranje više adresa i portova za slušanje. Ova opcija daje instrukcije serveru da odgovori na zahtjeve sa bilo koje od navedenih adresa i portova.

Postavljanje virtuelnih hostova zasnovanih na imenu

Koncept virtuelnog hosta definiše pojedinačnu lokaciju (ili domenu) koju opslužuje ista fizička mašina. Zapravo, više lokacija/domena se može opsluživati sa jednog “stvarnog” servera kao virtuelnog hosta. Ovaj proces je transparentan za krajnjeg korisnika, kome se čini da različite stranice opslužuju različiti web serveri.

Virtuelni hosting zasnovan na nazivu omogućava serveru da se osloni na klijenta da prijavi ime hosta kao deo HTTP zaglavlja. Stoga, koristeći ovu tehniku, mnogo različitih domaćina može dijeliti istu IP adresu.

Svaki virtuelni host je konfigurisan u direktorijumu unutar DocumentRoot. U našem slučaju, koristit ćemo 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 stranice bile ispravno prikazane, mi ćemo chmod svaki VirtualHost direktorij na 755:

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

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

<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 dno /etc/httpd/conf/httpd.conf ili / etc/apache2/httpd.conf, odnosno, ili ga samo 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 virtuelnog hosta možete dodati u zasebne datoteke unutar /etc/httpd/conf.d direktorija. Ako to odlučite, svaka konfiguracijska datoteka mora biti imenovana na sljedeći način:

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

Drugim riječima, trebate dodati .conf web lokaciji ili nazivu domene.

U Ubuntu, svaka pojedinačna konfiguraciona datoteka nosi naziv /etc/apache2/sites-available/[ime lokacije].conf. Svaka web lokacija se zatim omogućava ili onemogućuje pomoću naredbi 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

Komande a2ensite i a2dissite kreiraju veze do konfiguracijske datoteke virtuelnog hosta i stavljaju ih (ili uklanjaju) u /etc/apache2/sites-enabled > imenik.

Da biste mogli pretraživati obje stranice iz drugog Linux kutija, morat ćete dodati sljedeće redove u datoteku /etc/hosts na tom stroju kako biste preusmjerili zahtjeve na te domene na određeni IP adresa.


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

Kao sigurnosna mjera, SELinux neće dozvoliti Apacheu da piše dnevnike 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 virtuelne hostove.

Nakon ponovnog pokretanja Apache-a, trebali biste vidjeti sljedeću stranicu na gore navedenim adresama:

Instalacija i konfiguracija SSL-a sa Apacheom

Konačno, kreirat ćemo i instalirati samopotpisani certifikat za korištenje sa Apacheom. Ova vrsta podešavanja je prihvatljiva u malim okruženjima, kao što je privatni LAN.

Međutim, ako će vaš server izložiti sadržaj vanjskom svijetu preko Interneta, htjet ćete instalirati certifikat potpisan od treće strane kako biste potvrdili njegovu autentičnost. U svakom slučaju, certifikat će vam omogućiti da šifrirate informacije koje se prenose na, sa ili unutar vaše stranice.

U CentOS i openSUSE, morate instalirati mod_ssl paket.

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

Dok u Ubuntu morate omogućiti ssl modul za Apache.

a2enmod ssl

Sljedeći koraci su objašnjeni korištenjem CentOS test servera, ali vaše postavke bi trebale biti gotovo identične u drugim distribucijama (ako naiđete na bilo kakve probleme, ne ustručavajte se ostaviti svoja pitanja koristeći komentare obrazac).

Korak 1 [Opciono]: Kreirajte direktorij za pohranjivanje vaših certifikata.

mkdir /etc/httpd/ssl-certs

Korak 2: Generirajte 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 kreiramo x509 certifikat.
  2. -čvorovi (NO DES) znači "nemojte šifrirati ključ".
  3. -dana 365 je broj dana za koje će certifikat važiti.
  4. -newkey rsa:2048 kreira 2048-bitni RSA ključ.
  5. -keyout /etc/httpd/ssl-certs/apache.key je apsolutna putanja RSA ključa.
  6. -out /etc/httpd/ssl-certs/apache.crt je apsolutna putanja certifikata.

Korak 3: Otvorite odabranu konfiguracijsku datoteku virtualnog hosta (ili njen odgovarajući odjeljak u /etc/httpd/conf/httpd.conf kao što je objašnjeno ranije) i dodajte sljedeće redove u deklaracija virtuelnog hosta koja sluša na portu 443.

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

Imajte na umu da morate dodati.

NameVirtualHost *:443

na vrhu, odmah ispod

NameVirtualHost *:80

Obje direktive upućuju apacheu da sluša portove 443 i 80 svih mrežnih interfejsa.

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

Zatim ponovo pokrenite Apache,

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

I usmjerite svoj pretraživač na https://www.ilovelinux.com. Biće vam predstavljen sledeći ekran.

Samo naprijed i kliknite na “Razumijem rizike” i “Dodaj izuzetak”.

Na kraju, označite “Trajno pohrani ovaj izuzetak” i kliknite na “Potvrdi sigurnosni izuzetak”.

I bit ćete preusmjereni na svoju početnu stranicu koristeći https.

Sažetak

U ovom postu smo pokazali kako konfigurirati Apache i zasnovano na nazivu virtuelni hosting sa SSL za siguran prijenos podataka. Ako ste iz nekog razloga naišli na bilo kakve probleme, slobodno nas obavijestite pomoću obrasca za komentare ispod. Biće nam više nego drago da vam pomognemo da izvršite uspešno postavljanje.

Pročitajte također

  1. Virtuelni hosting baziran na Apache IP-u i nazivu
  2. Kreiranje Apache virtuelnih hostova sa opcijama za uključivanje/isključivanje Vhost-a
  3. Nadgledajte “Apache Web Server” koristeći “Apache GUI” alat