Wéi Setup Standalone Apache Server mat Numm-baséiert Virtuell Hosting mat SSL Zertifikat - Deel 4


A LFCE (kuerz fir Linux Foundation Certified Engineer) ass en ausgebilte Fachmann deen d'Expertise huet fir Netzwierkservicer a Linux Systemer z'installéieren, ze verwalten an ze léisen, a verantwortlech ass fir den Design, Ëmsetzung a lafend Ënnerhalt vun der Systemarchitektur.

An dësem Artikel wäerte mir Iech weisen wéi Dir Apache konfiguréiert fir Webinhalt ze déngen, a wéi Dir Numm-baséiert virtuell Hosten an SSL opstellt, inklusiv e selbst ënnerschriwwenen Zertifika.

Aféierung vum Linux Foundation Certification Program (LFCE).

Notiz: Datt dësen Artikel net soll e komplette Guide iwwer Apache sinn, mee éischter e Startpunkt fir Selbststudie iwwer dëst Thema fir den LFCE Examen. Aus deem Grond bedecken mir d'Laaschtbalancéierung mat Apache och net an dësem Tutorial.

Dir wësst vläicht schonn aner Weeër fir déiselwecht Aufgaben auszeféieren, wat OK ass wann Dir bedenkt datt d'Linux Foundation Zertifizéierung strikt Leeschtungsbaséiert ass. Also, soulaang Dir 'd'Aarbecht gemaach kritt', hutt Dir gutt Chancen fir den Examen ze behalen.

Kuckt w.e.g. op Deel 1 vun der aktueller Serie (Netzwierkservicer installéieren an automatesch Startup beim Boot konfiguréieren) fir Instruktioune fir Apache z'installéieren an ze starten.

Bis elo sollt Dir den Apache Webserver installéiert hunn a lafen. Dir kënnt dëst mat dem folgenden Kommando verifizéieren.

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

Bemierkung: Datt de Kommando uewen iwwerpréift fir d'Präsenz vun entweder Apache oder httpd (déi meescht üblech Nimm fir de Web Daemon) ënnert der Lëscht vun de lafende Prozesser. Wann Apache leeft, kritt Dir Ausgang ähnlech wéi déi folgend.

Déi ultimativ Method fir d'Apache-Installatioun ze testen an ze kontrolléieren ob se leeft ass e Webbrowser lancéiert a weist op d'IP vum Server. Mir sollten de folgenden Écran oder op d'mannst e Message presentéiert ginn, deen bestätegt datt Apache funktionnéiert.

Apache konfiguréieren

D'Haaptkonfiguratiounsdatei fir Apache kann a verschiddene Verzeichnisser ofhängeg vun Ärer Verdeelung sinn.

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

Glécklech fir eis sinn d'Konfiguratiounsdirektiven extrem gutt dokumentéiert op der Apache Projet Websäit. Mir wäerten e puer vun hinnen am ganzen Artikel bezéien.

Déi meescht Basis Notzung vun Apache ass fir Websäiten an engem Standalone Server ze servéieren wou nach keng virtuell Hosten konfiguréiert sinn. D'DocumentRoot Direktiv spezifizéiert de Verzeichnis aus deem Apache Websäiten Dokumenter servéiert.

Notéiert datt als Standard all Ufroen aus dësem Verzeechnes geholl ginn, awer Dir kënnt och symbolesch Linken benotzen an/oder Aliasen kënnen och benotzt ginn fir op aner Plazen ze weisen.

Wann et net mat der Alias Direktiv entsprécht (wat et erlaabt Dokumenter am lokalen Dateiesystem ze späicheren anstatt ënner dem Verzeichnis, deen vun DocumentRoot spezifizéiert ass), setzt de Server de Wee vun der ugefrote URL un. op d'Dokumentwurzel fir de Wee zum Dokument ze maachen.

Zum Beispill, gitt de folgende DocumentRoot:

Wann de Webbrowser op [Server IP oder Hostname]/lfce/tecmint.html weist, gëtt de Server op /var/ www/html/lfce/tecmint.html (unzehuelen datt esou Datei existéiert) a späichert den Event op säin Zougangsprotokoll mat enger 200 (OK) Äntwert.

Den Zougangsprotokoll gëtt normalerweis bannent /var/log ënner engem representativen Numm fonnt, wéi access.log oder access_log. Dir kënnt souguer dëse Logbuch (an och de Feelerprotokoll) an engem Ënnerverzeechnes fannen (zum Beispill /var/log/httpd an CentOS). Soss gëtt de gescheiterten Event nach ëmmer an den Zougangsprotokoll ageloggt, awer mat enger 404 (Net fonnt) Äntwert.

Zousätzlech ginn déi gescheitert Eventer am Fehlerlog opgeholl:

D'Format vum Zougangslog kann no Äre Besoinen personaliséiert ginn mat der Direktiv LogFormat an der Haaptkonfiguratiounsdatei, wärend Dir datselwecht net mam Feelerprotokoll maache kënnt .

De Standardformat vum Zougangsprotokoll ass wéi follegt:

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

Wou jidderee vun de Buschtawen virun engem Prozent Zeechen de Server ugeet fir e bestëmmt Informatiounsstéck ze protokolléieren:

an Spëtznumm ass en optionalen Alias dee benotzt ka ginn fir aner Logbicher ze personaliséieren ouni déi ganz Konfiguratiounsstring erëm anzeginn.

Dir kënnt op d'LogFormat Direktiv [Custom Log Formats Sektioun] an den Apache Dokumenter fir weider Optiounen verweisen.

Béid Logdateien (Zougang an Feeler) representéieren eng grouss Ressource fir séier op ee Bléck ze analyséieren wat um Apache-Server geschitt. Natierlech ze soen, si sinn dat éischt Tool e Systemadministrator benotzt fir Probleemer ze léisen.

Schlussendlech ass eng aner wichteg Direktiv Lauschteren, déi dem Server erzielt fir Entréeën Ufroen op de spezifizéierte Port oder Adress/Port Kombinatioun ze akzeptéieren:

Wann nëmmen eng Portnummer definéiert ass, lauschtert den Apache op de gegebene Port op all Netzwierkschnëttplazen (d'Wildcard Zeechen * gëtt benotzt fir 'all Netzwierkschnëttplazen' unzeginn).

Wa béid IP Adress an Hafen spezifizéiert sinn, da lauschtert d'Apache op d'Kombinatioun vum gegebenen Hafen an dem Netzwierkinterface.

Notéiert w.e.g. (wéi Dir an de Beispiller hei drënner gesitt) datt verschidde Listen Direktiven zur selwechter Zäit benotzt kënne ginn fir verschidde Adressen an Ports ze spezifizéieren fir no ze lauschteren. Dës Optioun instruéiert de Server op Ufroe vun enger vun den opgelëschten Adressen an Ports z'äntwerten.

Numm-baséiert Virtuell Hosten opsetzen

D'Konzept vum virtuelle Host definéiert en individuellen Site (oder Domain) deen vun der selwechter kierperlecher Maschinn zerwéiert gëtt. Eigentlech kënne verschidde Siten/Domainen vun engem eenzegen \real Server als virtuelle Host zerwéiert ginn. Dëse Prozess ass transparent fir den Endbenotzer, fir deen et schéngt, datt déi verschidde Siten duerch verschidde servéiert ginn. Web Serveren.

Numm-baséiert virtuelle Hosting erlaabt de Server op de Client ze vertrauen fir den Hostnumm als Deel vun den HTTP Header ze berichten. Also, mat dëser Technik, kënne vill verschidde Hosten déiselwecht IP Adress deelen.

All virtuelle Host ass an engem Verzeechnes bannent DocumentRoot konfiguréiert. Fir eise Fall benotze mir déi folgend Dummy Domains fir den Testsetup, jidderee läit am entspriechende Verzeechnes:

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

Fir Säiten korrekt ze weisen, wäerte mir chmod all VirtualHost Verzeechnes op 755:

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

Als nächst erstellt eng Probe index.html Datei an all public_html Verzeichnis:

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

Schlussendlech, an CentOS an openSUSE füügt déi folgend Sektioun um Enn vun /etc/httpd/conf/httpd.conf oder / etc/apache2/httpd.conf, respektiv, oder just änneren wann et schonn do ass.

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

Notéiert w.e.g. datt Dir och all virtuell Host-Definitioun an getrennten Dateien am /etc/httpd/conf.d Verzeichnis kënnt addéieren. Wann Dir dat maacht, muss all Konfiguratiounsdatei wéi follegt benannt ginn:

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

An anere Wierder, Dir musst .conf op de Site oder den Domain Numm addéieren.

An Ubuntu gëtt all eenzel Konfiguratiounsdatei /etc/apache2/sites-available/[sitenumm].conf genannt. All Site gëtt dann mat de Kommandoen a2ensite respektiv a2dissite aktivéiert oder ausgeschalt, wéi follegt.

# 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

D'Befehle a2ensite an a2dissite kreéieren Linken op d'Konfiguratiounsdatei vum virtuelle Host a setzen (oder ewechhuelen) se an den /etc/apache2/sites-enabled > Verzeechnes.

Fir op béide Säite vun enger anerer Linux Box ze surfen, musst Dir déi folgend Zeilen an der /etc/hosts Datei an där Maschinn addéieren fir Ufroen op dës Domainen op eng spezifesch IP ze redirectéieren. Adress.

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

Als Sécherheetsmoossnam erlaabt SELinux Apache net fir Logbicher an e Verzeichnis ze schreiwen wéi de Standard /var/log/httpd.

Dir kënnt entweder SELinux deaktivéieren, oder de richtege Sécherheetskontext setzen:

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

wou xxxxxx de Verzeechnes bannent /var/www/html ass wou Dir Är Virtuell Hosts definéiert hutt.

Nodeems Dir Apache nei gestart hutt, sollt Dir déi folgend Säit op den uewe genannte Adressen gesinn:

Installatioun a Konfiguratioun vun SSL mat Apache

Schlussendlech wäerte mir e selwer ënnerschriwwene Zertifika erstellen an installéieren fir mat Apache ze benotzen. Dës Aart vu Setup ass akzeptabel a klenge Ëmfeld, wéi zum Beispill e private LAN.

Wéi och ëmmer, wann Äre Server Inhalt op der Äussewelt iwwer dem Internet aussetzt, wëllt Dir en Zertifika installéieren deen vun enger Drëtt Partei ënnerschriwwen ass fir seng Authentizitéit ze bestätegen. Egal wéi, e Certificat erlaabt Iech d'Informatioun ze verschlësselen déi op, vun oder op Ärem Site iwwerdroe gëtt.

An CentOS an openSUSE musst Dir de Paket mod_ssl installéieren.

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

Wärend Ubuntu Dir musst den ssl Modul fir Apache aktivéieren.

# a2enmod ssl

Déi folgend Schrëtt gi mat engem CentOS Testserver erkläert, awer Äre Setup sollt bal identesch sinn an deenen anere Verdeelungen (wann Dir mat iergendenger Problemer kommt, zéckt net Är Froen mat de Kommentarer ze loossen Form).

Schrëtt 1 [Optional]: Erstellt en Dossier fir Är Certificaten ze späicheren.

# mkdir /etc/httpd/ssl-certs

Schrëtt 2: Generéiert Äre selwer ënnerschriwwenen Zertifika an de Schlëssel deen et schützt.

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

Eng kuerz Erklärung vun den Optiounen uewen opgezielt:

  1. req -X509 weist datt mir en x509 Zertifika erstellen.
  2. -Nodes (NO DES) heescht de Schlëssel net verschlësselen.
  3. -Days 365 ass d'Zuel vun den Deeg wou de Certificat valabel ass.
  4. -newkey rsa:2048 erstellt en 2048-Bit RSA Schlëssel.
  5. -keyout /etc/httpd/ssl-certs/apache.key ass den absolute Wee vum RSA Schlëssel.
  6. -out /etc/httpd/ssl-certs/apache.crt ass den absolute Wee vum Zertifika.

3 eng virtuell Hosterklärung déi um Port 443 lauschtert.

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

Maacht weg datt Dir musst derbäisetzen.

NameVirtualHost *:443

uewen, riets ënnen

NameVirtualHost *:80

Béid Direktiven instruéieren Apache fir op Ports 443 an 80 vun all Netzwierkschnëttplazen ze lauschteren.

Dat folgend Beispill ass aus /etc/httpd/conf/httpd.conf geholl:

Da starten Apache nei,

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

A weist Äre Browser op https://www.ilovelinux.com. Dir wäert mat de folgende Écran presentéiert ginn.

Gitt vir a klickt op \Ech verstinn d'Risiken an \Ausnam derbäi.

Schlussendlech, kontrolléiert \Dës Ausnam permanent späicheren a klickt op \Sécherheetsausnahme bestätegt.

An Dir gitt op Är Homepage mat https ëmgeleet.

Resumé

An dësem Beitrag hu mir gewisen wéi Dir Apache an Nummbaséiert virtuelle Hosting mat SSL konfiguréiert fir d'Dateniwwerdroung ze sécheren. Wann Dir aus irgendege Grënn Probleemer hutt, fillt Iech gratis mat der Kommentarform hei drënner ze loossen. Mir wäerte méi wéi frou sinn Iech ze hëllefen en erfollegräiche Setup auszeféieren.

Lies Och

  1. Apache IP Baséiert an Numm baséiert Virtuell Hosting
  2. Apache virtuelle Hosten erstellen mat Vhosts-Optiounen aktivéieren/deaktivéieren
  3. Monitor \Apache Web Server Mat \Apache GUI\ Tool