Itsenäisen Apache-palvelimen määrittäminen nimipohjaisella virtuaalipalvelimella SSL-sertifikaatilla - Osa 4


LFCE (lyhenne sanoista Linux Foundation Certified Engineer) on koulutettu ammattilainen, jolla on asiantuntemusta verkkopalvelujen asentamiseen, hallintaan ja vianmääritykseen Linux-järjestelmissä ja joka vastaa järjestelmäarkkitehtuurin suunnittelu, toteutus ja jatkuva ylläpito.

Tässä artikkelissa näytämme, kuinka Apache määritetään palvelemaan verkkosisältöä ja kuinka määritetään nimipohjaiset virtuaalipalvelimet ja SSL, mukaan lukien itse allekirjoitettu varmenne.

Esittelyssä Linux Foundation Certification Program (LFCE).

Huomaa: tämän artikkelin ei ole tarkoitus olla kattava Apache-opas, vaan pikemminkin lähtökohta tämän aiheen itsenäiselle opiskelulle LFCE:lle tentti. Tästä syystä emme myöskään käsittele kuormituksen tasapainottamista Apachen kanssa tässä opetusohjelmassa.

Saatat jo tietää muita tapoja suorittaa samat tehtävät, mikä on OK, koska Linux Foundation -sertifiointi on tiukasti suorituskykyyn perustuva. Niin kauan kuin 'saat työsi valmiiksi', sinulla on hyvät mahdollisuudet läpäistä koe.

Vaatimukset

Katso nykyisen sarjan osa 1 ("Verkkopalveluiden asentaminen ja automaattisen käynnistyksen määrittäminen käynnistyksen yhteydessä") saadaksesi ohjeet Apachen asentamisesta ja käynnistämisestä.

Tähän mennessä sinulla pitäisi olla Apache-verkkopalvelin asennettuna ja käynnissä. Voit varmistaa tämän seuraavalla komennolla.

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

Huomaa: yllä oleva komento tarkistaa, onko olemassa joko apache tai httpd (yleisimpiä nimiä web daemon) käynnissä olevien prosessien luettelossa. Jos Apache on käynnissä, saat seuraavanlaisen tulosteen.

Lopullinen tapa testata Apache-asennusta ja tarkistaa, onko se käynnissä, on käynnistää verkkoselain ja osoittaa palvelimen IP-osoite. Meille pitäisi näyttää seuraava näyttö tai ainakin viesti, joka vahvistaa, että Apache toimii.

Apachen asetukset

Apachen pääasetustiedosto voi sijaita eri hakemistoissa jakelustasi riippuen.

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

Onneksi konfigurointiohjeet on dokumentoitu erittäin hyvin Apache-projektin verkkosivuilla. Viittaan joihinkin niistä tämän artikkelin aikana.

Sivujen palveleminen erillisessä palvelimessa Apachen kanssa

Apachen peruskäyttötapa on palvella verkkosivuja erillisessä palvelimessa, jolle ei ole vielä määritetty virtuaalisia isäntiä. DocumentRoot-direktiivi määrittää hakemiston, josta Apache palvelee verkkosivujen asiakirjoja.

Huomaa, että oletusarvoisesti kaikki pyynnöt otetaan tästä hakemistosta, mutta voit myös käyttää symbolisia linkkejä ja/tai aliaksia voidaan käyttää osoittamaan myös muihin paikkoihin.

Palvelin liittää polun pyydetystä URL-osoitteesta, ellei sitä vastaa Alias-direktiivi asiakirjan juureen luodaksesi polun asiakirjaan.

Esimerkiksi seuraava DocumentRoot:

Kun verkkoselain osoittaa [Palvelimen IP-osoite tai isäntänimi]/lfce/tecmint.html, palvelin avaa /var/ www/html/lfce/tecmint.html (olettaen, että tällainen tiedosto on olemassa) ja tallenna tapahtuma sen käyttölokiin 200 (OK) vastauksella.

Käyttöloki löytyy yleensä hakemistosta /var/log edustavalla nimellä, kuten access.log tai access_log. Saatat jopa löytää tämän lokin (ja myös virhelokin) alihakemistosta (esimerkiksi /var/log/httpd CentOS:ssä). Muussa tapauksessa epäonnistunut tapahtuma kirjataan edelleen käyttölokiin, mutta vastauksella 404 (ei löydy).

Lisäksi epäonnistuneet tapahtumat tallennetaan virhelokiin:

käyttölokin muotoa voidaan mukauttaa tarpeidesi mukaan käyttämällä päämääritystiedoston LogFormat-ohjetta, kun taas et voi tehdä samaa virhelokin kanssa. .

Käyttölokin oletusmuoto on seuraava:

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

Kun jokainen kirjain, jota edeltää prosenttimerkki, osoittaa, että palvelin kirjaa tietyn tiedon:

String

Kuvaus

 %h

 Etäisäntänimi tai IP-osoite

 %l

 Etälokin nimi

 %u

 Etäkäyttäjä, jos pyyntö on todennettu

 %t

 Päivämäärä ja aika, jolloin pyyntö vastaanotettiin

 %r

 Ensimmäinen pyyntörivi palvelimelle

 %>s

 Pyynnön lopullinen tila

 %b

 Vastauksen koko [tavua]

ja lempinimi on valinnainen alias, jota voidaan käyttää muiden lokien mukauttamiseen tarvitsematta syöttää koko asetusmerkkijonoa uudelleen.

Voit katsoa lisää vaihtoehtoja Apache-dokumenttien LogFormat-ohjeesta [Mukautetut lokimuodot -osa].

Molemmat lokitiedostot (access ja error) ovat loistava resurssi, jonka avulla voit nopeasti analysoida yhdellä silmäyksellä, mitä Apache-palvelimella tapahtuu. Sanomattakin on selvää, että ne ovat ensimmäinen työkalu, jota järjestelmänvalvoja käyttää ongelmien vianmääritykseen.

Lopuksi toinen tärkeä ohje on Listen, joka käskee palvelinta hyväksymään saapuvat pyynnöt määritetyssä portissa tai osoite/portti-yhdistelmässä:

Jos vain portin numero on määritetty, apache kuuntelee annettua porttia kaikissa verkkoliitännöissä (jokerimerkkiä * käytetään osoittamaan "kaikki verkkoliitännät").

Jos sekä IP-osoite että portti on määritetty, apache kuuntelee annetun portin ja verkkoliitännän yhdistelmää.

Huomaa (kuten näet alla olevista esimerkeistä), että useita Listen-komentoja voidaan käyttää samanaikaisesti määrittämään useita osoitteita ja portteja, joita kuunnella. Tämä asetus kehottaa palvelinta vastaamaan pyyntöihin mistä tahansa luetelluista osoitteista ja porteista.

Nimipohjaisten virtuaalipalvelinten määrittäminen

Virtuaalipalvelimen käsite määrittelee yksittäisen sivuston (tai toimialueen), jota palvelee sama fyysinen kone. Itse asiassa useita sivustoja/verkkotunnuksia voidaan palvella yhdestä "oikeasta" palvelimesta virtuaalisena isäntänä. Tämä prosessi on läpinäkyvä loppukäyttäjälle, jolle näyttää siltä, että eri sivustoja palvelevat erilliset verkkopalvelimet.

Nimipohjainen virtuaalinen hosting sallii palvelimen luottaa siihen, että asiakas ilmoittaa isäntänimen osana HTTP-otsikoita. Siten tätä tekniikkaa käyttämällä monet eri isännät voivat jakaa saman IP-osoitteen.

Jokainen virtuaalinen isäntä on määritetty hakemistoon DocumentRootissa. Meidän tapauksessamme käytämme seuraavia valeverkkotunnuksia testausasetuksissa, joista jokainen sijaitsee vastaavassa hakemistossa:

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

Jotta sivut näkyvät oikein, muutamme jokaisen VirtualHostin hakemiston hakemistoon 755:

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

Luo seuraavaksi esimerkki index.html-tiedosto jokaiseen public_html-hakemistoon:

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

Lisää lopuksi CentOS:ssä ja openSUSEssa seuraava osio tiedoston /etc/httpd/conf/httpd.conf tai / alaosaan. etc/apache2/httpd.conf, tai vain muokkaa sitä, jos se on jo olemassa.


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

Huomaa, että voit myös lisätä jokaisen virtuaalisen isäntämäärityksen erillisiin tiedostoihin /etc/httpd/conf.d-hakemistoon. Jos päätät tehdä niin, jokainen asetustiedosto on nimettävä seuraavasti:

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

Toisin sanoen, sinun on lisättävä .conf sivuston tai verkkotunnuksen nimeen.

Ubuntussa jokaisen yksittäisen määritystiedoston nimi on /etc/apache2/sites-available/[sivuston nimi].conf. Jokainen sivusto otetaan sitten käyttöön tai poistetaan käytöstä a2ensite- tai a2dissite-komennoilla seuraavasti.

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

a2ensite- ja a2dissite-komennot luovat linkkejä virtuaalisen isännän määritystiedostoon ja sijoittavat (tai poistavat) ne /etc/apache2/sites-enabled-tiedostoon. > hakemistosta.

Jotta voit selata molempia sivustoja toisesta Linux-laatikosta, sinun on lisättävä seuraavat rivit kyseisen koneen /etc/hosts-tiedostoon, jotta voit ohjata pyynnöt näihin verkkotunnuksiin tiettyyn IP-osoitteeseen. osoite.


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

Turvallisuussyistä SELinux ei salli Apachen kirjoittaa lokeja muuhun hakemistoon kuin oletushakemistoon /var/log/httpd.

Voit joko poistaa SELinuxin käytöstä tai määrittää oikean suojauskontekstin:


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

jossa xxxxxx on hakemistossa /var/www/html, johon olet määrittänyt virtuaalipalvelimesi.

Kun olet käynnistänyt Apachen uudelleen, sinun pitäisi nähdä seuraava sivu yllä olevissa osoitteissa:

SSL:n asentaminen ja määrittäminen Apachella

Lopuksi luomme ja asennamme itseallekirjoitetun varmenteen käytettäväksi Apachen kanssa. Tällainen asennus on hyväksyttävä pienissä ympäristöissä, kuten yksityisessä lähiverkossa.

Jos palvelimesi paljastaa sisällön ulkomaailmalle Internetin kautta, sinun kannattaa asentaa kolmannen osapuolen allekirjoittama varmenne sen aitouden varmistamiseksi. Joka tapauksessa sertifikaatin avulla voit salata tiedot, jotka lähetetään sivustollesi, sivustoltasi tai sen sisällä.

CentOS:ssä ja openSUSEssa sinun on asennettava paketti mod_ssl.

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

Kun taas Ubuntussa sinun on otettava ssl-moduuli käyttöön Apachelle.

a2enmod ssl

Seuraavat vaiheet selitetään CentOS-testipalvelimella, mutta kokoonpanosi pitäisi olla lähes identtinen muissa jakeluissa (jos kohtaat ongelmia, älä epäröi jättää kysymyksesi kommentteihin muoto).

Vaihe 1 [Valinnainen]: Luo hakemisto sertifikaattien tallentamista varten.

mkdir /etc/httpd/ssl-certs

Vaihe 2: Luo itse allekirjoitettu varmenne ja avain, joka suojaa sitä.

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

Lyhyt selostus yllä luetelluista vaihtoehdoista:

  1. req -X509 osoittaa, että olemme luomassa x509-varmennetta.
  2. -solmut (NO DES) tarkoittaa "älä salaa avainta".
  3. -päivää 365 on päivien lukumäärä, jonka varmenne on voimassa.
  4. -newkey rsa:2048 luo 2048-bittisen RSA-avaimen.
  5. -keyout /etc/httpd/ssl-certs/apache.key on RSA-avaimen absoluuttinen polku.
  6. -out /etc/httpd/ssl-certs/apache.crt on varmenteen absoluuttinen polku.

Vaihe 3: Avaa valitsemasi virtuaalisen isännän määritystiedosto (tai sitä vastaava osio tiedostossa /etc/httpd/conf/httpd.conf, kuten aiemmin selitettiin) ja lisää seuraavat rivit virtuaalinen isäntäilmoitus, joka kuuntelee porttia 443.

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

Huomaa, että sinun on lisättävä.

NameVirtualHost *:443

ylhäällä, alhaalla

NameVirtualHost *:80

Molemmat direktiivit ohjaavat apachea kuuntelemaan kaikkien verkkoliitäntöjen portteja 443 ja 80.

Seuraava esimerkki on otettu osoitteesta /etc/httpd/conf/httpd.conf:

Käynnistä sitten Apache uudelleen,

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

Valitse selaimesi osoitteesta https://www.ilovelinux.com. Sinulle näytetään seuraava näyttö.

Siirry eteenpäin ja napsauta "Ymmärrän riskit" ja "Lisää poikkeus".

Valitse lopuksi "Tallenna tämä poikkeus pysyvästi" ja napsauta "Vahvista suojauspoikkeus".

Ja sinut ohjataan etusivullesi käyttämällä https-yhteyttä.

Yhteenveto

Tässä viestissä olemme osoittaneet, kuinka Apache ja nimipohjainen virtuaalinen hosting määritetään SSL:llä tiedonsiirron suojaamiseksi. Jos jostain syystä törmäsit ongelmiin, ilmoita siitä meille käyttämällä alla olevaa kommenttilomaketta. Autamme sinua mielellämme onnistuneessa asennuksessa.

Lue myös

  1. Apache IP-pohjainen ja nimipohjainen virtuaalinen hosting
  2. Apache Virtual Hosts -palvelinten luominen Vhostit käyttöön-/pois käytöstä -asetuksista
  3. Tarkkaile "Apache Web Server" -työkalua "Apache GUI" -työkalulla