Kako nastaviti samostojni strežnik Apache z navideznim gostovanjem na podlagi imen s potrdilom SSL - 4. del


LFCE (okrajšava za Linux Foundation Certified Engineer ) je usposobljen strokovnjak, ki ima strokovno znanje za namestitev, upravljanje in odpravljanje težav z omrežnimi storitvami v sistemih Linux in je odgovoren za načrtovanje, izvajanje in stalno vzdrževanje sistemske arhitekture.

V tem članku vam bomo pokazali, kako konfigurirati Apache za prikazovanje spletnih vsebin in kako nastaviti navidezne gostitelje in SSL na osnovi imen, vključno s samopodpisanim potrdilom.

Predstavljamo vam Linux Foundation Certification Program (LFCE).

Opomba: Ta članek naj ne bi bil izčrpen vodnik o Apacheju, temveč bolj izhodišče za samostojno učenje te teme za izpit LFCE . Iz tega razloga tudi v tej vadnici ne pokrivamo uravnoteženja obremenitve z Apachejem.

Morda že poznate druge načine za izvajanje istih nalog, kar je v redu , saj potrjevanje Linux Foundation Certification strogo temelji na zmogljivosti. Dokler ‘ opravite delo ’, imate velike možnosti za uspešno opravljen izpit.

Za navodila o namestitvi in zagonu Apache glejte 1. del trenutne serije (\ "Namestitev omrežnih storitev in konfiguriranje samodejnega zagona ob zagonu").

Do zdaj bi moral imeti nameščen in zagnan spletni strežnik Apache. To lahko preverite z naslednjim ukazom.

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

Opomba: Zgornji ukaz preveri, ali je na seznamu izvajanih procesov prisotna apache ali httpd (najpogostejša imena spletnega demona). Če se Apache izvaja, boste dobili rezultate, podobne naslednjim.

Najboljša metoda testiranja namestitve Apache in preverjanja, ali se ta izvaja, je zagon spletnega brskalnika in usmeritev na IP strežnika. Predal bi se nam naslednji zaslon ali vsaj sporočilo, ki potrjuje, da Apache deluje.

Konfiguriranje Apache

Glavna konfiguracijska datoteka za Apache je lahko v različnih imenikih, odvisno 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šo srečo so konfiguracijske smernice izjemno dobro dokumentirane na spletnem mestu projekta Apache. V tem članku se bomo sklicevali na nekatere od njih.

Najosnovnejša uporaba Apacheja je služenje spletnih strani v samostojnem strežniku, kjer še ni konfiguriran noben virtualni gostitelj. Direktiva DocumentRoot določa imenik, iz katerega bo Apache stregel dokumente spletnih strani.

Upoštevajte, da so privzeto vse zahteve vzete iz tega imenika, lahko pa uporabite tudi simbolične povezave in/ali vzdevke, ki jih lahko uporabite tudi za usmerjanje na druge lokacije.

Če se ne ujema z direktivo Alias (ki omogoča shranjevanje dokumentov v lokalnem datotečnem sistemu namesto v imeniku, ki ga določa DocumentRoot ), strežnik doda pot iz zahtevanega URL-ja do korena dokumenta, da naredite pot do dokumenta.

Na primer, glede na naslednji DocumentRoot :

Ko spletni brskalnik kaže na [ IP strežnika ali ime gostitelja ] /lfce/tecmint.html , se strežnik odpre /var/www/html/lfce/tecmint.html (ob predpostavki, da taka datoteka obstaja) in dogodek shranite v svoj dnevnik dostopa z odzivom 200 ( OK ).

Dnevnik dostopa je običajno v /var/log pod reprezentativnim imenom, na primer access.log ali access_log . Ta dnevnik (in tudi dnevnik napak) lahko celo najdete v podimeniku (na primer /var/log/httpd v CentOS). V nasprotnem primeru bo neuspeli dogodek še vedno zabeležen v dnevnik dostopa, vendar z odzivom 404 (Not Found).

Poleg tega bodo neuspeli dogodki zabeleženi v dnevniku napak :

Format dnevnika dostopa lahko prilagodite svojim potrebam z uporabo LogFormat direktive v glavni konfiguracijski datoteki, medtem ko tega ne morete storiti z dnevnikom napak .

Privzeta oblika dnevnika dostopa je naslednja:

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

Kjer vsaka od črk, pred katerimi je znak odstotka, pomeni, da strežnik zabeleži določen podatek:

in vzdevek je neobvezen vzdevek, s katerim lahko prilagodite druge dnevnike, ne da bi morali znova vnesti celoten niz konfiguracije.

Za nadaljnje možnosti se lahko obrnete na direktivo LogFormat [razdelek Oblike zapisov po meri] v Apachejevih dokumentih.

Obe dnevniški datoteki ( dostop in napaka ) sta odličen vir za hitro analizo dogajanja na strežniku Apache. Ni treba posebej poudarjati, da so prvo orodje, ki ga sistemski skrbnik uporablja za odpravljanje težav.

Na koncu je še ena pomembna direktiva Poslušaj , ki strežniku sporoča, naj sprejme dohodne zahteve za določena vrata ali naslov/kombinacijo vrat:

Če je določena samo številka vrat, bo apache poslušal dana vrata na vseh omrežnih vmesnikih (nadomestni znak * se uporablja za označevanje »vseh omrežnih vmesnikov«).

Če sta navedena naslov IP in vrata, bo apache poslušal kombinacijo danih vrat in omrežnega vmesnika.

Upoštevajte (kot boste videli v spodnjih primerih), da lahko več direktiv o poslušanju hkrati uporabite za določanje več naslovov in vrat za poslušanje. Ta možnost strežniku naroči, naj se odzove na zahteve s katerega koli od navedenih naslovov in vrat.

Nastavitev navideznih gostiteljev na podlagi imen

Koncept navideznega gostitelja definira posamezno spletno mesto (ali domeno), ki ga oskrbuje isti fizični stroj. Pravzaprav je mogoče več spletnih mest/domen z enega samega strežnika\" real " postreči kot navidezni gostitelj. Ta postopek je pregleden za končnega uporabnika, ki se mu zdi, da različna spletna mesta strežejo ločeno spletni strežniki.

Navidezno gostovanje na podlagi imen omogoča strežniku, da se zanese na odjemalca, da bo ime gostitelja poročal kot del HTTP glav. Tako lahko z uporabo te tehnike veliko različnih gostiteljev deli isti naslov IP.

Vsak navidezni gostitelj je konfiguriran v imeniku znotraj DocumentRoot . V našem primeru bomo za nastavitev testiranja uporabili naslednje navidezne domene, ki se nahajajo v ustreznem imeniku:

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

Da se bodo strani pravilno prikazovale, bomo chmod imenik vsakega VirtualHost postavili na 755 :

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

Nato ustvarite vzorčno datoteko index.html v vsakem imeniku public_html :

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

Nazadnje v CentOS in openSUSE dodajte naslednji razdelek na dnu /etc/httpd/conf/httpd.conf ali /etc/apache2/httpd.conf oziroma ga preprosto spremenite, če je že tam.

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

Upoštevajte, da lahko vsako definicijo navideznega gostitelja dodate tudi v ločenih datotekah v imeniku /etc/httpd/conf.d . Če se odločite za to, mora biti vsaka konfiguracijska datoteka poimenovana tako:

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

Z drugimi besedami, spletnemu mestu ali imenu domene morate dodati .conf .

V Ubuntu se vsaka posamezna konfiguracijska datoteka imenuje /etc/apache2/sites-available/[ime spletnega mesta] .conf . Vsako spletno mesto nato omogočite ali onemogočite z ukazi a2ensite ali a2dissite , kot sledi.

# 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

Ukaza a2ensite in a2dissite ustvarjata povezave do konfiguracijske datoteke navideznega gostitelja in ju umestita (ali odstranita) v /etc/apache2/sites-enabled imenik.

Če želite brskati po obeh straneh iz drugega okna Linuxa, boste morali dodati datoteko /etc/hosts v tej napravi naslednje vrstice, da boste preusmerili zahteve na te domene na določen IP naslov.

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

Kot varnostni ukrep SELinux Apacheju ne bo dovolil pisanja dnevnikov v drug imenik kot privzeti/var/log/httpd.

Lahko onemogočite SELinux ali nastavite pravi varnostni kontekst:

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

kjer je xxxxxx imenik znotraj/var/www/html, kjer ste določili svoje virtualne gostitelje.

Po ponovnem zagonu Apacheja bi morali na zgornjih naslovih videti naslednjo stran:

Namestitev in konfiguriranje SSL z Apache

Na koncu bomo ustvarili in namestili potrdilo z lastnim podpisom za uporabo z Apache. Takšna nastavitev je sprejemljiva v majhnih okoljih, kot je zasebno LAN.

Če pa bo vaš strežnik vsebino izpostavljal zunanjemu svetu prek interneta, boste želeli namestiti potrdilo, ki ga podpiše tretja oseba, da potrdi njeno pristnost. Kakor koli že, potrdilo vam bo omogočilo šifriranje informacij, ki se prenašajo na vaše spletno mesto, z njega ali znotraj njega.

V CentOS in openSUSE morate namestiti paket mod_ssl .

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

Medtem ko boste v Ubuntu morali omogočiti modul ssl za Apache.

# a2enmod ssl

Naslednji koraki so razloženi s preizkusnim strežnikom CentOS , vendar bi morala biti vaša nastavitev skoraj enaka v drugih distribucijah (če naletite na kakršne koli težave, ne oklevajte in pustite vprašanja s komentarji. oblika).

1. korak [neobvezno] : ustvarite imenik za shranjevanje potrdil.

# mkdir /etc/httpd/ssl-certs

2. korak : ustvarite lastnoročno podpisano potrdilo in ključ, ki ga bo zaščitil.

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

Kratka razlaga zgoraj naštetih možnosti:

  1. req -X509 pomeni, da ustvarjamo potrdilo x509.
  2. -nodes (NO DES) pomeni\"ne šifriraj ključa".
  3. -days 365 je število dni, ko bo potrdilo veljalo.
  4. -newkey rsa: 2048 ustvari 2048-bitni RSA ključ.
  5. -keyout /etc/httpd/ssl-certs/apache.key je absolutna pot RSA ključa.
  6. -out /etc/httpd/ssl-certs/apache.crt je absolutna pot do potrdila.

3. korak : Odprite izbrano konfiguracijsko datoteko navideznega gostitelja (ali ustrezen odsek v /etc/httpd/conf/httpd.conf , kot je bilo razloženo prej) in dodajte naslednje vrstice v izjava navideznega gostitelja, ki posluša na vratih 443 .

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

Prosimo, upoštevajte, da morate dodati.

NameVirtualHost *:443

na vrhu, desno spodaj

NameVirtualHost *:80

Obe direktivi apacheu naročita, naj posluša na vratih 443 in 80 vseh omrežnih vmesnikov.

Naslednji primer je vzet iz /etc/httpd/conf/httpd.conf :

Nato znova zaženite Apache,

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

In usmerite brskalnik na https://www.ilovelinux.com . Prikazal se vam bo naslednji zaslon.

Pojdite naprej in kliknite\" Razumem tveganja " in\" Dodaj izjemo ".

Na koncu označite\" Trajno shrani to izjemo " in kliknite\" Potrdi varnostno izjemo ".

In s https boste preusmerjeni na svojo domačo stran.

Povzetek

V tej objavi smo pokazali, kako konfigurirati Apache in na osnovi imen navidezno gostovanje s SSL za zaščito prenosa podatkov. Če ste iz kakršnega koli razloga naleteli na kakršne koli težave, nam to sporočite s pomočjo spodnjega obrazca za komentar. Z veseljem vam bomo pomagali pri uspešni namestitvi.

Preberite tudi

  1. Navidezno gostovanje na podlagi IP-ja in imena na osnovi Apache
  2. Ustvarjanje navideznih gostiteljev Apache z možnostmi Omogoči/Onemogoči Vhosts
  3. Nadzirajte\"spletni strežnik Apache" z orodjem\"Apache GUI"