Kaip nustatyti autonominį „Apache“ serverį naudojant vardinį virtualų prieglobą su SSL sertifikatu – 4 dalis


LFCE (sutrumpintas iš Linux Foundation Certified Engineer) yra apmokytas specialistas, turintis patirties diegti, valdyti ir šalinti tinklo paslaugas Linux sistemose ir yra atsakingas už sistemos architektūros projektavimas, diegimas ir nuolatinė priežiūra.

Šiame straipsnyje parodysime, kaip sukonfigūruoti „Apache“, kad būtų teikiamas žiniatinklio turinys, ir kaip nustatyti vardu pagrįstus virtualius pagrindinius kompiuterius ir SSL, įskaitant savarankiškai pasirašytą sertifikatą.

Pristatome „Linux Foundation“ sertifikavimo programą (LFCE).

Pastaba: šis straipsnis neturėtų būti išsamus „Apache“ vadovas, o greičiau atspirties taškas savarankiškoms studijoms šia tema LFCE egzaminą. Dėl šios priežasties šioje pamokoje taip pat neapimame apkrovos balansavimo naudojant „Apache“.

Galbūt jau žinote kitus būdus, kaip atlikti tas pačias užduotis, o tai yra Gerai, atsižvelgiant į tai, kad „Linux Foundation“ sertifikatas yra griežtai pagrįstas našumu. Taigi, kol „atliksite darbą“, turite daug galimybių išlaikyti egzaminą.

Reikalavimai

Žr. dabartinės serijos 1 dalį („Tinklo paslaugų diegimas ir automatinio paleidimo konfigūravimas paleidžiant“), kad gautumėte instrukcijas, kaip įdiegti ir paleisti „Apache“.

Iki šiol turėtumėte būti įdiegtas ir paleistas „Apache“ žiniatinklio serveris. Tai galite patikrinti naudodami šią komandą.

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

Pastaba: kad aukščiau pateikta komanda patikrina, ar nėra apache arba httpd (dažniausiai naudojami pavadinimai žiniatinklio demonas) tarp vykdomų procesų sąrašo. Jei veikia „Apache“, gausite panašią išvestį, kaip nurodyta toliau.

Galutinis „Apache“ diegimo ir patikrinimo, ar jis veikia, metodas yra paleisti žiniatinklio naršyklę ir nukreipti į serverio IP adresą. Mums turėtų būti pateiktas toks ekranas arba bent jau pranešimas, patvirtinantis, kad „Apache“ veikia.

„Apache“ konfigūravimas

Pagrindinis „Apache“ konfigūracijos failas gali būti skirtinguose kataloguose, atsižvelgiant į platinimą.

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

Mūsų laimei, konfigūracijos direktyvos yra labai gerai dokumentuotos Apache projekto svetainėje. Kai kuriuos iš jų aptarsime šiame straipsnyje.

Puslapių aptarnavimas atskirame serveryje su „Apache“.

Paprasčiausias „Apache“ naudojimas yra tinklalapių aptarnavimas atskirame serveryje, kuriame dar nesukonfigūruota jokia virtualioji priegloba. Direktyva DocumentRoot nurodo katalogą, iš kurio „Apache“ teiks tinklalapių dokumentus.

Atminkite, kad pagal numatytuosius nustatymus visos užklausos paimamos iš šio katalogo, tačiau taip pat galite naudoti simbolines nuorodas ir (arba) slapyvardžius, kurie taip pat gali būti naudojami nukreipiant į kitas vietas.

Jei neatitinka direktyva Alias (kuri leidžia dokumentus saugoti vietinėje failų sistemoje, o ne kataloge, nurodytame DocumentRoot), serveris prideda kelią iš prašomo URL į dokumento šaknį, kad būtų nustatytas kelias į dokumentą.

Pavyzdžiui, atsižvelgiant į šį DocumentRoot:

Kai žiniatinklio naršyklė nurodo [Serverio IP arba hostname]/lfce/tecmint.html, serveris atidarys /var/ www/html/lfce/tecmint.html (darant prielaidą, kad toks failas egzistuoja) ir išsaugokite įvykį jo prieigos žurnale su atsakymu 200 (Gerai).

Prieigos žurnalas paprastai randamas /var/log tipiniu pavadinimu, pvz., access.log arba access_log. Šį žurnalą (ir klaidų žurnalą) netgi galite rasti pakatalogyje (pavyzdžiui, /var/log/httpd sistemoje CentOS). Priešingu atveju nepavykęs įvykis vis tiek bus įrašytas į prieigos žurnalą, tačiau bus pateiktas 404 (nerasta) atsakymas.

Be to, nesėkmingi įvykiai bus įrašyti į klaidų žurnalą:

Prieigos žurnalo formatą galima tinkinti pagal savo poreikius, naudojant pagrindiniame konfigūracijos faile esančią direktyvą LogFormat, o to negalima padaryti su klaidų žurnalu .

Numatytasis prieigos žurnalo formatas yra toks:

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

Kai kiekviena raidė, prieš kurią yra procento ženklas, nurodo, kad serveris turi užregistruoti tam tikrą informacijos dalį:

String

Aprašas

 %h

 Nuotolinio kompiuterio pavadinimas arba IP adresas

 %l

 Nuotolinio žurnalo pavadinimas

 %u

 Nuotolinis naudotojas, jei užklausa autentifikuota

 %t

 Data ir laikas, kada buvo gauta užklausa

 %r

 Pirmoji užklausos serveriui eilutė

 %>s

 Galutinė užklausos būsena

 %b

 Atsakymo dydis [baitai]

ir slapyvardis yra pasirenkamas slapyvardis, kurį galima naudoti norint tinkinti kitus žurnalus, dar kartą neįvedant visos konfigūracijos eilutės.

Daugiau parinkčių rasite „Apache“ dokumentų direktyvoje LogFormat [Custom log formats section].

Abu žurnalo failai (prieiga ir klaida) yra puikus šaltinis, leidžiantis greitai išanalizuoti, kas vyksta „Apache“ serveryje. Nereikia nė sakyti, kad tai pirmasis įrankis, kurį sistemos administratorius naudoja problemoms šalinti.

Galiausiai, kita svarbi direktyva yra Listen, kuri nurodo serveriui priimti įeinančias užklausas nurodytu prievadu arba adreso/prievado deriniu:

Jei apibrėžtas tik prievado numeris, „apache“ klausys nurodyto prievado visose tinklo sąsajose (pakaitos simbolis * naudojamas „visoms tinklo sąsajoms“ nurodyti).

Jei nurodytas ir IP adresas, ir prievadas, tada apache klausys nurodyto prievado ir tinklo sąsajos derinio.

Atkreipkite dėmesį (kaip matysite toliau pateiktuose pavyzdžiuose), kad vienu metu galima naudoti kelias Klausymo direktyvas, norint nurodyti kelis adresus ir prievadus, kurių reikia klausytis. Ši parinktis nurodo serveriui atsakyti į užklausas iš bet kurio iš išvardytų adresų ir prievadų.

Vardais pagrįstų virtualių kompiuterių nustatymas

Virtualiojo pagrindinio kompiuterio sąvoka apibrėžia atskirą svetainę (arba domeną), kurią aptarnauja ta pati fizinė mašina. Tiesą sakant, kelios svetainės/domenai gali būti aptarnaujami viename „tikrame“ serveryje kaip virtualioji priegloba. Šis procesas yra skaidrus galutiniam vartotojui, kuriam atrodo, kad skirtingas svetaines aptarnauja skirtingi žiniatinklio serveriai.

Vardu pagrįsta virtuali priegloba leidžia serveriui pasikliauti tuo, kad klientas praneš pagrindinio kompiuterio pavadinimą kaip HTTP antraštės dalį. Taigi, naudojant šią techniką, daug skirtingų kompiuterių gali bendrinti tą patį IP adresą.

Kiekvienas virtualus pagrindinis kompiuteris sukonfigūruotas DocumentRoot kataloge. Mūsų atveju testavimo sąrankai naudosime šiuos netikrus domenus, kurių kiekvienas yra atitinkamame kataloge:

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

Kad puslapiai būtų rodomi teisingai, pakeisime kiekvieno „VirtualHost“ katalogą į 755:

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

Tada kiekviename public_html kataloge sukurkite pavyzdinį index.html failą:

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

Galiausiai prie CentOS ir openSUSE pridėkite šią skiltį /etc/httpd/conf/httpd.conf arba / apačioje. etc/apache2/httpd.conf arba tiesiog pakeiskite jį, jei jis jau yra.


<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>

Atkreipkite dėmesį, kad kiekvieną virtualaus pagrindinio kompiuterio apibrėžimą taip pat galite įtraukti į atskirus failus /etc/httpd/conf.d kataloge. Jei nuspręsite tai padaryti, kiekvienas konfigūracijos failas turi būti pavadintas taip:

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

Kitaip tariant, prie svetainės arba domeno pavadinimo turite pridėti .conf.

Ubuntu kiekvienas atskiras konfigūracijos failas pavadintas /etc/apache2/sites-available/[svetainės pavadinimas].conf. Tada kiekviena svetainė įjungiama arba išjungiama atitinkamai komandomis a2ensite arba a2dissite, kaip nurodyta toliau.

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

Komandos a2ensite ir a2dissite sukuria nuorodas į virtualaus pagrindinio kompiuterio konfigūracijos failą ir įdeda (arba pašalina) jas į /etc/apache2/sites-enabled > katalogas.

Kad galėtumėte naršyti abi svetaines iš kito „Linux“ dėžutės, turėsite pridėti šias eilutes į failą /etc/hosts tame kompiuteryje, kad peradresuotumėte užklausas į tuos domenus į konkretų IP adresu.


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

Saugumo sumetimais SELinux neleis Apache rašyti žurnalų į kitą katalogą nei numatytasis /var/log/httpd.

Galite išjungti SELinux arba nustatyti tinkamą saugos kontekstą:


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

kur xxxxxx yra katalogas, esantis /var/www/html, kuriame apibrėžėte savo virtualiuosius pagrindinius kompiuterius.

Iš naujo paleidę „Apache“, turėtumėte pamatyti šį puslapį aukščiau nurodytais adresais:

SSL diegimas ir konfigūravimas naudojant „Apache“.

Galiausiai sukursime ir įdiegsime savarankiškai pasirašytą sertifikatą, kurį naudosime su „Apache“. Tokia sąranka yra priimtina mažose aplinkose, pvz., privačiame LAN.

Tačiau jei jūsų serveris pateiks turinį išoriniam pasauliui per internetą, norėsite įdiegti sertifikatą, pasirašytą trečiosios šalies, kad patvirtintumėte jo autentiškumą. Bet kuriuo atveju sertifikatas leis užšifruoti informaciją, kuri siunčiama į svetainę, iš jos ar joje.

Sistemose CentOS ir openSUSE turite įdiegti mod_ssl paketą.

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

Tuo tarpu Ubuntu turėsite įjungti ssl modulį, skirtą Apache.

a2enmod ssl

Šie veiksmai paaiškinami naudojant CentOS bandomąjį serverį, tačiau jūsų sąranka turėtų būti beveik identiška kituose platinimuose (jei iškils kokių nors problemų, nedvejodami palikite klausimus komentaruose forma).

1 veiksmas [pasirenkama]: sukurkite katalogą sertifikatams saugoti.

mkdir /etc/httpd/ssl-certs

2 veiksmas: sugeneruokite savarankiškai pasirašytą sertifikatą ir raktą, kuris jį apsaugos.

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

Trumpas aukščiau išvardytų parinkčių paaiškinimas:

  1. req -X509 rodo, kad kuriame x509 sertifikatą.
  2. -mazgai (BE DES) reiškia „nešifruoti rakto“.
  3. -365 dienos yra dienų skaičius, kurį sertifikatas galios.
  4. -newkey rsa:2048 sukuria 2048 bitų RSA raktą.
  5. -keyout /etc/httpd/ssl-certs/apache.key yra absoliutus RSA rakto kelias.
  6. -out /etc/httpd/ssl-certs/apache.crt yra absoliutus sertifikato kelias.

3 veiksmas: atidarykite pasirinktą virtualaus pagrindinio kompiuterio konfigūracijos failą (arba atitinkamą /etc/httpd/conf/httpd.conf skyrių, kaip paaiškinta anksčiau) ir pridėkite šias eilutes prie virtualaus pagrindinio kompiuterio deklaracija, kuri klausosi prievado 443.

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

Atkreipkite dėmesį, kad reikia pridėti.

NameVirtualHost *:443

viršuje, apačioje

NameVirtualHost *:80

Abi direktyvos nurodo „apache“ klausytis visų tinklo sąsajų 443 ir 80 prievaduose.

Šis pavyzdys paimtas iš /etc/httpd/conf/httpd.conf:

Tada iš naujo paleiskite „Apache“,

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

Ir nukreipkite naršyklę į https://www.ilovelinux.com. Jums bus parodytas toks ekranas.

Eikite į priekį ir spustelėkite „Suprantu riziką“ ir „Pridėti išimtį“.

Galiausiai pažymėkite „Išsaugoti šią išimtį visam laikui“ ir spustelėkite „Patvirtinti saugos išimtį“.

Ir būsite nukreipti į pagrindinį puslapį naudodami https.

Santrauka

Šiame įraše parodėme, kaip sukonfigūruoti Apache ir pagrįstą virtualią prieglobą naudojant SSL, kad būtų užtikrintas duomenų perdavimas. Jei dėl kokių nors priežasčių iškilo kokių nors problemų, nedvejodami praneškite mums naudodami toliau pateiktą komentarų formą. Mes labai džiaugsimės galėdami padėti jums atlikti sėkmingą sąranką.

Taip pat skaitykite

  1. Apache IP pagrįstas ir vardais virtualus priegloba
  2. „Apache“ virtualiųjų kompiuterių kūrimas naudojant „Vhosts“ įjungimo/išjungimo parinktis
  3. Stebėkite „Apache Web Server“ naudodami „Apache GUI“ įrankį