Hvordan sette opp frittstående Apache-server med navnebasert virtuell hosting med SSL-sertifikat - del 4


En LFCE (forkortelse for Linux Foundation Certified Engineer) er en utdannet fagperson som har ekspertisen til å installere, administrere og feilsøke nettverkstjenester i Linux-systemer, og er ansvarlig for design, implementering og løpende vedlikehold av systemarkitekturen.

I denne artikkelen vil vi vise deg hvordan du konfigurerer Apache til å tjene nettinnhold, og hvordan du setter opp navnbaserte virtuelle verter og SSL, inkludert et selvsignert sertifikat.

Vi introduserer Linux Foundation Certification Program (LFCE).

Merk: At denne artikkelen ikke er ment å være en omfattende veiledning om Apache, men snarere et utgangspunkt for selvstudier om dette emnet for LFCE eksamen. Av den grunn dekker vi heller ikke lastbalansering med Apache i denne opplæringen.

Du kjenner kanskje allerede til andre måter å utføre de samme oppgavene på, noe som er OK med tanke på at Linux Foundation-sertifiseringen strengt tatt er ytelsesbasert. Så lenge du «får jobben gjort», har du gode sjanser til å bestå eksamen.

Krav

Vennligst se Del 1 av gjeldende serie (“Installere nettverkstjenester og konfigurere automatisk oppstart ved oppstart ”) for instruksjoner om hvordan du installerer og starter Apache.

Nå bør du ha Apache-nettserveren installert og kjørt. Du kan bekrefte dette med følgende kommando.

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

Merk: at kommandoen ovenfor sjekker for tilstedeværelse av enten apache eller httpd (de vanligste navnene for webdemonen) blant listen over kjørende prosesser. Hvis Apache kjører, vil du få utdata som ligner på følgende.

Den ultimate metoden for å teste Apache-installasjonen og sjekke om den kjører, er å starte en nettleser og peke på IP-en til serveren. Vi bør bli presentert med følgende skjermbilde eller i det minste en melding som bekrefter at Apache fungerer.

Konfigurerer Apache

Hovedkonfigurasjonsfilen for Apache kan være plassert i forskjellige kataloger avhengig av distribusjonen din.

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

Heldigvis for oss er konfigurasjonsdirektivene ekstremt godt dokumentert på nettsiden til Apache-prosjektet. Vi vil referere til noen av dem gjennom denne artikkelen.

Servering av sider på en frittstående server med Apache

Den mest grunnleggende bruken av Apache er å betjene nettsider på en frittstående server der ingen virtuelle verter er konfigurert ennå. DocumentRoot-direktivet spesifiserer katalogen som Apache skal levere websidedokumenter fra.

Merk at som standard er alle forespørsler hentet fra denne katalogen, men du kan også bruke symbolske lenker og/eller aliaser kan også brukes til å peke til andre steder.

Med mindre det samsvarer med Alias-direktivet (som tillater at dokumenter lagres i det lokale filsystemet i stedet for under katalogen spesifisert av DocumentRoot), legger serveren til banen fra den forespurte URL-adressen til dokumentroten for å lage banen til dokumentet.

For eksempel gitt følgende DocumentRoot:

Når nettleseren peker på [Server IP eller vertsnavn]/lfce/tecmint.html, vil serveren åpne /var/ www/html/lfce/tecmint.html (forutsatt at en slik fil eksisterer) og lagre hendelsen i tilgangsloggen med et 200 (OK) svar.

Tilgangsloggen finnes vanligvis inne i /var/log under et representativt navn, for eksempel access.log eller access_log. Du kan til og med finne denne loggen (og feilloggen også) i en underkatalog (for eksempel /var/log/httpd i CentOS). Ellers vil den mislykkede hendelsen fortsatt logges til tilgangsloggen, men med et 404-svar (ikke funnet).

I tillegg vil de mislykkede hendelsene bli registrert i feilloggen:

Formatet til tilgangsloggen kan tilpasses etter dine behov ved å bruke LogFormat-direktivet i hovedkonfigurasjonsfilen, mens du ikke kan gjøre det samme med feilloggen .

Standardformatet for tilgangsloggen er som følger:

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

Hvor hver av bokstavene foran med et prosenttegn indikerer at serveren skal logge en viss informasjon:

String

Beskrivelse

 %h

 Eksternt vertsnavn eller IP-adresse

 %l

 Eksternt loggnavn

 %u

 Ekstern bruker hvis forespørselen er autentisert

 %t

 Dato og klokkeslett da forespørselen ble mottatt

 %r

 Første linje med forespørsel til serveren

 %>s

 Endelig status for forespørselen

 %b

 Størrelsen på svaret [bytes]

og kallenavn er et valgfritt alias som kan brukes til å tilpasse andre logger uten å måtte skrive inn hele konfigurasjonsstrengen på nytt.

Du kan referere til LogFormat-direktivet [Seksjonen for tilpassede loggformater] i Apache-dokumentene for flere alternativer.

Begge loggfilene (tilgang og feil) representerer en flott ressurs for raskt å analysere på et øyeblikk hva som skjer på Apache-serveren. Unødvendig å si at de er det første verktøyet en systemadministrator bruker for å feilsøke problemer.

Til slutt, et annet viktig direktiv er Lytt, som forteller serveren om å akseptere innkommende forespørsler på den angitte porten eller adresse/portkombinasjonen:

Hvis bare et portnummer er definert, vil apache lytte til den gitte porten på alle nettverksgrensesnitt (jokertegnet * brukes til å indikere 'alle nettverksgrensesnitt').

Hvis både IP-adresse og port er spesifisert, vil apache lytte på kombinasjonen av gitt port og nettverksgrensesnitt.

Vær oppmerksom på (som du vil se i eksemplene nedenfor) at flere lytte-direktiver kan brukes samtidig for å spesifisere flere adresser og porter å lytte til. Dette alternativet instruerer serveren til å svare på forespørsler fra alle de oppførte adressene og portene.

Sette opp navnebaserte virtuelle verter

Konseptet med virtuell vert definerer et individuelt nettsted (eller domene) som betjenes av den samme fysiske maskinen. Faktisk kan flere nettsteder/domener serveres fra en enkelt «ekte» server som virtuell vert. Denne prosessen er gjennomsiktig for sluttbrukeren, for hvem det ser ut til at de forskjellige nettstedene betjenes av forskjellige webservere.

Navnebasert virtuell hosting lar serveren stole på at klienten rapporterer vertsnavnet som en del av HTTP-hodene. Ved å bruke denne teknikken kan mange forskjellige verter derfor dele den samme IP-adressen.

Hver virtuell vert er konfigurert i en katalog i DocumentRoot. For vårt tilfelle vil vi bruke følgende dummy-domener for testoppsettet, hver plassert i den tilsvarende katalogen:

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

For at sidene skal vises riktig, chmod hver VirtualHosts katalog til 755:

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

Deretter oppretter du et eksempel på index.html-fil i hver public_html-katalog:

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

Til slutt, i CentOS og openSUSE legger du til følgende seksjon nederst på /etc/httpd/conf/httpd.conf eller / etc/apache2/httpd.conf, henholdsvis, eller bare endre den hvis den 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>

Vær oppmerksom på at du også kan legge til hver virtuell vertsdefinisjon i separate filer i /etc/httpd/conf.d-katalogen. Hvis du velger å gjøre det, må hver konfigurasjonsfil navngis som følger:

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

Du må med andre ord legge til .conf til nettstedet eller domenenavnet.

I Ubuntu heter hver enkelt konfigurasjonsfil /etc/apache2/sites-available/[navn på nettsted].conf. Hvert nettsted blir deretter aktivert eller deaktivert med kommandoene a2ensite eller a2dissite, henholdsvis 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

Kommandoene a2ensite og a2dissite oppretter koblinger til den virtuelle vertskonfigurasjonsfilen og plasserer (eller fjerner) dem i /etc/apache2/sites-enabled katalog.

For å kunne bla til begge nettstedene fra en annen Linux-boks, må du legge til følgende linjer i /etc/hosts-filen på den maskinen for å omdirigere forespørsler til disse domenene til en spesifikk IP adresse.


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

Som et sikkerhetstiltak vil ikke SELinux tillate Apache å skrive logger til en annen katalog enn standard /var/log/httpd.

Du kan enten deaktivere SELinux, eller angi riktig sikkerhetskontekst:


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

hvor xxxxxx er katalogen i /var/www/html der du har definert dine virtuelle verter.

Etter å ha startet Apache på nytt, bør du se følgende side på adressene ovenfor:

Installere og konfigurere SSL med Apache

Til slutt vil vi opprette og installere et selvsignert sertifikat som skal brukes med Apache. Denne typen oppsett er akseptabelt i små miljøer, for eksempel et privat LAN.

Men hvis serveren din vil eksponere innhold til omverdenen over Internett, vil du installere et sertifikat signert av en tredjepart for å bekrefte ektheten. Uansett vil et sertifikat tillate deg å kryptere informasjonen som overføres til, fra eller innenfor nettstedet ditt.

I CentOS og openSUSE må 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 må aktivere ssl-modulen for Apache.

a2enmod ssl

Følgende trinn er forklart ved hjelp av en CentOS-testserver, men oppsettet ditt bør være nesten identisk i de andre distribusjonene (hvis du støter på noen form for problemer, ikke nøl med å legge igjen spørsmålene dine ved å bruke kommentarene skjema).

Trinn 1 [Valgfritt]: Opprett en katalog for å lagre sertifikatene dine.

mkdir /etc/httpd/ssl-certs

Trinn 2: Generer ditt selvsignerte sertifikat og nøkkelen som skal beskytte 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 av alternativene ovenfor:

  1. req -X509 indikerer at vi oppretter et x509-sertifikat.
  2. -noder (NO DES) betyr "ikke krypter nøkkelen".
  3. -dager 365 er antall dager sertifikatet vil være gyldig for.
  4. -newkey rsa:2048 oppretter en 2048-biters RSA-nøkkel.
  5. -keyout /etc/httpd/ssl-certs/apache.key er den absolutte banen til RSA-nøkkelen.
  6. -out /etc/httpd/ssl-certs/apache.crt er den absolutte banen til sertifikatet.

Trinn 3: Åpne den valgte konfigurasjonsfilen for virtuell vert (eller dens tilsvarende seksjon i /etc/httpd/conf/httpd.conf som forklart tidligere) og legg til følgende linjer i en virtuell vertserklæring som lytter på port 443.

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

Vær oppmerksom på at du må legge til.

NameVirtualHost *:443

øverst, rett under

NameVirtualHost *:80

Begge direktivene instruerer apache til å lytte på portene 443 og 80 av alle nettverksgrensesnitt.

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

Start deretter Apache på nytt,

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

Og pek nettleseren til https://www.ilovelinux.com. Du vil bli presentert med følgende skjermbilde.

Gå videre og klikk på «Jeg forstår risikoen» og «Legg til unntak ».

Til slutt, merk av for «Lagre dette unntaket permanent» og klikk på «Bekreft sikkerhetsunntak ».

Og du vil bli omdirigert til hjemmesiden din ved hjelp av https.

Sammendrag

I dette innlegget har vi vist hvordan du konfigurerer Apache og navnebasert virtuell hosting med SSL for å sikre dataoverføring. Hvis du av en eller annen grunn har problemer, kan du gjerne gi oss beskjed ved å bruke kommentarskjemaet nedenfor. Vi hjelper deg mer enn gjerne med å utføre et vellykket oppsett.

Les også

  1. Apache IP-basert og navnebasert virtuell hosting
  2. Opprette virtuelle Apache-verter med Aktiver/Deaktiver Vhosts-alternativer
  3. Overvåk "Apache Web Server" ved å bruke "Apache GUI"-verktøyet