Sådan konfigureres standalone Apache-server med navnebaseret virtuel hosting med SSL-certifikat - del 4


En LFCE (forkortelse for Linux Foundation Certified Engineer ) er en uddannet professionel, der har ekspertisen til at installere, administrere og fejlfinde netværkstjenester i Linux-systemer og er ansvarlig for design, implementering og løbende vedligeholdelse af systemarkitekturen.

I denne artikel viser vi dig, hvordan du konfigurerer Apache til at tjene webindhold, og hvordan du opsætter navne-baserede virtuelle værter og SSL, herunder et selvsigneret certifikat.

Introduktion til Linux Foundation Certification Program (LFCE).

Bemærk: At denne artikel ikke skal være en omfattende guide til Apache, men snarere et udgangspunkt for selvstudium om dette emne til LFCE eksamen. Af den grund dækker vi heller ikke over belastningsbalancering med Apache i denne vejledning.

Du kender muligvis allerede andre måder at udføre de samme opgaver på, hvilket er OK i betragtning af at Linux Foundation-certificeringen er strengt præstationsbaseret. Så længe du ' får jobbet gjort ', har du gode chancer for at bestå eksamen.

Se del 1 i den aktuelle serie (“Installation af netværkstjenester og konfiguration af automatisk opstart ved opstart”) for instruktioner om installation og start af Apache.

Nu skal Apache-webserveren være installeret og køre. Du kan bekræfte dette med følgende kommando.

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

Bemærk: At ovenstående kommando kontrollerer for tilstedeværelsen af enten apache eller httpd (de mest almindelige navne til web-dæmonen) blandt listen over kørende processer. Hvis Apache kører, får du output svarende til følgende.

Den ultimative metode til at teste Apache-installationen og kontrollere, om den kører, er at starte en webbrowser og pege på serverens IP. Vi skal have følgende skærmbillede eller i det mindste en besked, der bekræfter, at Apache fungerer.

Konfiguration af Apache

Hovedkonfigurationsfilen til Apache kan findes i forskellige mapper afhængigt af din distribution.

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

Heldigvis for os er konfigurationsdirektiverne ekstremt veldokumenterede på Apache-projektets websted. Vi vil henvise til nogle af dem gennem denne artikel.

Den mest basale anvendelse af Apache er at betjene websider på en enkeltstående server, hvor der endnu ikke er konfigureret nogen virtuelle værter. Direktivet DocumentRoot specificerer den mappe, hvorfra Apache skal servere websides dokumenter.

Bemærk, at som standard er alle anmodninger taget fra denne mappe, men du kan også bruge symbolske links og/eller aliaser kan også bruges til at pege på andre placeringer.

Medmindre det matches med Alias -direktivet (som gør det muligt at gemme dokumenter i det lokale filsystem i stedet for under den mappe, der er angivet af DocumentRoot ), tilføjer serveren stien fra den anmodede URL til dokumentets rod for at gøre stien til dokumentet.

For eksempel givet følgende DocumentRoot :

Når webbrowseren peger på [ Server-IP eller værtsnavn ] /lfce/tecmint.html , åbner serveren /var/www/html/lfce/tecmint.html (forudsat at en sådan fil findes), og gem begivenheden i dens adgangslog med et 200 ( OK ) svar.

Adgangsloggen findes typisk i /var/log under et repræsentativt navn, såsom access.log eller access_log . Du kan endda finde denne log (og også fejlloggen) i en underkatalog (for eksempel /var/log/httpd i CentOS). Ellers vil den mislykkede hændelse stadig være logget på adgangsloggen, men med et 404 (ikke fundet) svar.

Derudover registreres de mislykkede hændelser i fejlloggen :

Formatet for adgangsloggen kan tilpasses efter dine behov ved hjælp af LogFormat -direktivet i hovedkonfigurationsfilen, mens du ikke kan gøre det samme med fejlloggen .

Standardformatet for adgangsloggen er som følger:

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

Hvor hvert bogstav forud for et procentsignal angiver, at serveren logger et bestemt stykke information:

og kaldenavn er et valgfrit alias, der kan bruges til at tilpasse andre logfiler uden at skulle indtaste hele konfigurationsstrengen igen.

Du kan henvise til LogFormat -direktivet [afsnittet Brugerdefinerede logformater] i Apache-dokumenterne for yderligere muligheder.

Begge logfiler ( adgang og fejl ) er en stor ressource til hurtigt at analysere, hvad der sker på Apache-serveren. Det er overflødigt at sige, at de er det første værktøj, som en systemadministrator bruger til at foretage fejlfinding af problemer.

Endelig er et andet vigtigt direktiv Lyt , som fortæller serveren at acceptere indgående anmodninger på den angivne port eller adresse/portkombination:

Hvis kun et portnummer er defineret, lytter apache til den givne port på alle netværksgrænseflader (jokertegnet * bruges til at indikere 'alle netværksgrænseflader').

Hvis både IP-adresse og port er angivet, lytter apache på kombinationen af den givne port og netværksgrænsefladen.

Bemærk (som du vil se i eksemplerne nedenfor), at flere lyttedirektiver kan bruges på samme tid til at angive flere adresser og porte, der skal lyttes til. Denne mulighed beder serveren om at svare på anmodninger fra en af de anførte adresser og porte.

Opsætning af navnebaserede virtuelle værter

Begrebet virtuel vært definerer et individuelt sted (eller domæne), der betjenes af den samme fysiske maskine. Faktisk kan flere websteder/domæner serveres fra en enkelt " ægte " server som virtuel vært. Denne proces er gennemsigtig for slutbrugeren, for hvem det ser ud til, at de forskellige sider betjenes af forskellige webservere.

Navnebaseret virtuel hosting tillader serveren at stole på, at klienten rapporterer værtsnavnet som en del af HTTP-headere. Således ved hjælp af denne teknik kan mange forskellige værter dele den samme IP-adresse.

Hver virtuel vært er konfigureret i en mappe inden for DocumentRoot . For vores sag bruger vi følgende dummy-domæner til testopsætningen, hver placeret i den tilsvarende mappe:

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

For at siderne skal vises korrekt, chmod hver VirtualHosts mappe til 755 :

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

Opret derefter en prøve index.html fil inde i hver public_html -mappe:

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

Endelig tilføj følgende afsnit i CentOS og openSUSE i bunden af /etc/httpd/conf/httpd.conf eller /etc/apache2/httpd.conf , eller bare rediger det, hvis det allerede er der.

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

Bemærk, at du også kan tilføje hver virtuel værtsdefinition i separate filer i mappen /etc/httpd/conf.d . Hvis du vælger at gøre det, skal hver konfigurationsfil navngives som følger:

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

Med andre ord skal du tilføje .conf til webstedet eller domænenavnet.

I Ubuntu hedder hver enkelt konfigurationsfil /etc/apache2/sites-available/[site name] .conf . Hvert websted aktiveres eller deaktiveres derefter med henholdsvis kommandoerne a2ensite eller a2dissite som følger.

# 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

Kommandoerne a2ensite og a2dissite opretter links til den virtuelle værtskonfigurationsfil og placerer (eller fjerner) dem i /etc/apache2/sites-aktiveret bibliotek.

For at være i stand til at gennemse begge sider fra en anden Linux-boks skal du tilføje følgende linjer i filen /etc/hosts på den pågældende maskine for at omdirigere anmodninger til disse domæner til en bestemt IP adresse.

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

Som en sikkerhedsforanstaltning tillader SELinux ikke Apache at skrive logfiler til en anden mappe end standard/var/log/httpd.

Du kan enten deaktivere SELinux eller indstille den rigtige sikkerhedskontekst:

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

hvor xxxxxx er biblioteket inde i/var/www/html, hvor du har defineret dine virtuelle værter.

Efter genstart af Apache skal du se følgende side på ovenstående adresser:

Installation og konfiguration af SSL med Apache

Endelig opretter og installerer vi et selvsigneret certifikat til brug sammen med Apache. Denne form for opsætning er acceptabel i små miljøer, såsom et privat LAN.

Men hvis din server udsætter indhold for omverdenen over Internettet, vil du installere et certifikat underskrevet af en tredjepart for at bekræfte dets ægthed. Uanset hvad vil et certifikat give dig mulighed for at kryptere de oplysninger, der transmitteres til, fra eller inden for dit websted.

I CentOS og openSUSE skal du installere pakken mod_ssl .

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

Mens du i Ubuntu bliver du nødt til at aktivere ssl-modulet til Apache.

# a2enmod ssl

Følgende trin forklares ved hjælp af en CentOS testserver, men din opsætning skal være næsten identisk i de andre distributioner (hvis du støder på nogen form for problemer, tøv ikke med at efterlade dine spørgsmål ved hjælp af kommentarerne form).

Trin 1 [Valgfrit] : Opret en mappe til at gemme dine certifikater.

# mkdir /etc/httpd/ssl-certs

Trin 2 : Generer dit selvsignerede certifikat og den nøgle, der beskytter det.

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

En kort forklaring af ovenstående muligheder:

  1. req -X509 angiver, at vi opretter et x509-certifikat.
  2. -noder (NO DES) betyder "ikke krypter nøglen".
  3. -dage 365 er det antal dage, certifikatet vil være gyldigt.
  4. -nykey rsa: 2048 opretter en 2048-bit RSA-nøgle.
  5. -keyout /etc/httpd/ssl-certs/apache.key er den absolutte sti til RSA-nøglen.
  6. -out /etc/httpd/ssl-certs/apache.crt er certifikatets absolutte sti.

Trin 3 : Åbn din valgte konfigurationsfil for virtuel vært (eller den tilsvarende sektion i /etc/httpd/conf/httpd.conf som forklaret tidligere), og tilføj følgende linjer til en virtuel værtserklæring, der lytter til port 443 .

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

Bemærk, at du skal tilføje.

NameVirtualHost *:443

øverst, lige nedenunder

NameVirtualHost *:80

Begge direktiver instruerer apache om at lytte til porte 443 og 80 på alle netværksgrænseflader.

Følgende eksempel er taget fra /etc/httpd/conf/httpd.conf :

Genstart derefter Apache,

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

Og peg din browser til https://www.ilovelinux.com . Du får vist følgende skærmbillede.

Gå videre og klik på “ Jeg forstår risiciene ” og “ Tilføj undtagelse ”.

Til sidst skal du markere “ Gem denne undtagelse permanent ” og klikke på “ Bekræft sikkerhedsundtagelse ”.

Og du bliver omdirigeret til din startside ved hjælp af https .

Resumé

I dette indlæg har vi vist, hvordan man konfigurerer Apache og navnebaseret virtuel hosting med SSL til at sikre datatransmission. Hvis du af en eller anden grund løb ind i problemer, er du velkommen til at fortælle os ved hjælp af nedenstående kommentarformular. Vi hjælper mere end gerne med at udføre en vellykket opsætning.

Læs også

  1. Apache IP-baseret og navnebaseret virtuel hosting
  2. Oprettelse af virtuelle Apache-værter med Aktiver/deaktiver Vhosts-indstillinger
  3. Overvåg "Apache-webserver" ved hjælp af "Apache GUI" -værktøj