Com configurar un servidor Apache autònom amb allotjament virtual basat en noms amb certificat SSL - Part 4


Un LFCE (abreviatura de Linux Foundation Certified Engineer) és un professional format que té l'experiència per instal·lar, gestionar i solucionar problemes de serveis de xarxa en sistemes Linux, i s'encarrega de el disseny, la implementació i el manteniment continu de l'arquitectura del sistema.

En aquest article us mostrarem com configurar Apache per servir contingut web i com configurar amfitrions virtuals basats en noms i SSL, inclòs un certificat autofirmat.

Presentació del programa de certificació de la Fundació Linux (LFCE).

Nota: que aquest article no ha de ser una guia completa sobre Apache, sinó un punt de partida per a l'autoestudi sobre aquest tema per a l'examen LFCE. Per aquest motiu, tampoc estem cobrint l'equilibri de càrrega amb Apache en aquest tutorial.

És possible que ja coneixeu altres maneres de realitzar les mateixes tasques, cosa que està OK tenint en compte que la certificació de la Fundació Linux es basa estrictament en el rendiment. Així, sempre que 'aconsegueixis la feina', tens bones possibilitats d'aprovar l'examen.

Consulteu la Part 1 de la sèrie actual (Instal·lació de serveis de xarxa i configuració de l'inici automàtic a l'arrencada) per obtenir instruccions sobre com instal·lar i iniciar Apache.

A hores d'ara, hauríeu de tenir el servidor web Apache instal·lat i en execució. Podeu comprovar-ho amb l'ordre següent.

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

Nota: que l'ordre anterior comprova la presència d'apache o httpd (els noms més comuns per al dimoni web) entre la llista de processos en execució. Si Apache s'està executant, obtindreu una sortida similar a la següent.

El mètode definitiu per provar la instal·lació d'Apache i comprovar si s'està executant és llançar un navegador web i apuntar a la IP del servidor. Ens hauria de presentar la següent pantalla o almenys un missatge que confirmi que Apache funciona.

Configurant Apache

El fitxer de configuració principal d'Apache es pot localitzar en diferents directoris segons la vostra distribució.

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

Afortunadament per a nosaltres, les directives de configuració estan molt ben documentades al lloc web del projecte Apache. En farem referència a alguns d'ells al llarg d'aquest article.

L'ús més bàsic d'Apache és servir pàgines web en un servidor autònom on encara no s'ha configurat cap amfitrió virtual. La directiva DocumentRoot especifica el directori des del qual Apache servirà els documents de les pàgines web.

Tingueu en compte que, de manera predeterminada, totes les sol·licituds es prenen d'aquest directori, però també podeu utilitzar enllaços simbòlics i/o àlies per apuntar a altres ubicacions també.

A menys que coincideixi amb la directiva Àlies (que permet que els documents s'emmagatzemin al sistema de fitxers local en lloc de sota el directori especificat per DocumentRoot), el servidor afegeix el camí de l'URL sol·licitat. a l'arrel del document per fer el camí al document.

Per exemple, tenint en compte el següent DocumentRoot:

Quan el navegador web apunta a [IP del servidor o nom d'amfitrió]/lfce/tecmint.html, el servidor obrirà /var/ www/html/lfce/tecmint.html (suposant que aquest fitxer existeix) i deseu l'esdeveniment al seu registre d'accés amb una resposta 200 (D'acord).

El registre d'accés normalment es troba a /var/log sota un nom representatiu, com ara access.log o access_log. Fins i tot podeu trobar aquest registre (i també el registre d'errors) dins d'un subdirectori (per exemple, /var/log/httpd a CentOS). En cas contrari, l'esdeveniment fallit encara es registrarà al registre d'accés però amb una resposta 404 (no trobat).

A més, els esdeveniments fallits es registraran al registre d'errors:

El format del registre d'accés es pot personalitzar segons les vostres necessitats mitjançant la directiva LogFormat al fitxer de configuració principal, mentre que no podeu fer el mateix amb el registre d'errors. .

El format predeterminat del registre d'accés és el següent:

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

On cadascuna de les lletres precedida d'un signe de percentatge indica que el servidor registra una determinada informació:

i àlies és un àlies opcional que es pot utilitzar per personalitzar altres registres sense haver de tornar a introduir tota la cadena de configuració.

Podeu consultar la directiva LogFormat [secció de formats de registre personalitzats] als documents d'Apache per obtenir més opcions.

Tots dos fitxers de registre (accés i error) representen un gran recurs per analitzar ràpidament d'un cop d'ull què està passant al servidor Apache. No cal dir que són la primera eina que fa servir un administrador del sistema per resoldre problemes.

Finalment, una altra directiva important és Escolta, que indica al servidor que accepti sol·licituds entrants al port especificat o a la combinació d'adreça/port:

Si només es defineix un número de port, l'apache escoltarà el port donat a totes les interfícies de xarxa (el signe comodí * s'utilitza per indicar totes les interfícies de xarxa).

Si s'especifiquen tant l'adreça IP com el port, l'apache escoltarà la combinació del port i la interfície de xarxa donats.

Tingueu en compte (com veureu als exemples següents) que es poden utilitzar diverses directives Listen alhora per especificar múltiples adreces i ports per escoltar. Aquesta opció indica al servidor que respongui a les sol·licituds des de qualsevol de les adreces i ports indicats.

Configuració d'amfitrions virtuals basats en noms

El concepte d'amfitrió virtual defineix un lloc (o domini) individual que és servit per la mateixa màquina física. De fet, es poden servir diversos llocs/dominis des d'un sol servidor \real com a amfitrió virtual. Aquest procés és transparent per a l'usuari final, a qui sembla que els diferents llocs estan sent servits per diferents servidors web.

L'allotjament virtual basat en noms permet que el servidor confiï que el client informi del nom d'amfitrió com a part de les capçaleres HTTP. Per tant, utilitzant aquesta tècnica, molts hosts diferents poden compartir la mateixa adreça IP.

Cada host virtual es configura en un directori dins de DocumentRoot. Per al nostre cas, utilitzarem els següents dominis ficticis per a la configuració de proves, cadascun situat al directori corresponent:

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

Per tal que les pàgines es mostrin correctament, modificarem cada directori de VirtualHost a 755:

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

A continuació, creeu un fitxer index.html de mostra dins de cada directori public_html:

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

Finalment, a CentOS i openSUSE afegiu la secció següent a la part inferior de /etc/httpd/conf/httpd.conf o / etc/apache2/httpd.conf, respectivament, o simplement modifiqueu-lo si ja hi és.

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

Tingueu en compte que també podeu afegir cada definició d'amfitrió virtual en fitxers separats dins del directori /etc/httpd/conf.d. Si decidiu fer-ho, cada fitxer de configuració s'ha de nomenar de la manera següent:

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

En altres paraules, heu d'afegir .conf al lloc o al nom del domini.

A Ubuntu, cada fitxer de configuració individual s'anomena /etc/apache2/sites-available/[nom del lloc].conf. A continuació, cada lloc s'habilita o desactiva amb les ordres a2ensite o a2dissite, respectivament, de la següent manera.

# 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

Les ordres a2ensite i a2dissite creen enllaços al fitxer de configuració de l'amfitrió virtual i els col·loquen (o eliminen) a /etc/apache2/sites-enabled directori.

Per poder navegar pels dos llocs des d'una altra caixa de Linux, haureu d'afegir les línies següents al fitxer /etc/hosts d'aquesta màquina per redirigir les sol·licituds a aquests dominis a una IP específica. adreça.

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

Com a mesura de seguretat, SELinux no permetrà que Apache escrigui registres en un directori diferent del /var/log/httpd per defecte.

Podeu desactivar SELinux o establir el context de seguretat adequat:

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

on xxxxxx és el directori dins de /var/www/html on heu definit els vostres hosts virtuals.

Després de reiniciar Apache, hauríeu de veure la pàgina següent a les adreces anteriors:

Instal·lació i configuració de SSL amb Apache

Finalment, crearem i instal·larem un certificat autofirmat per utilitzar-lo amb Apache. Aquest tipus de configuració és acceptable en entorns petits, com ara una LAN privada.

Tanmateix, si el vostre servidor exposarà contingut al món exterior a través d'Internet, voldreu instal·lar un certificat signat per un tercer per corroborar-ne l'autenticitat. De qualsevol manera, un certificat us permetrà xifrar la informació que es transmet cap a, des o dins del vostre lloc.

A CentOS i openSUSE, heu d'instal·lar el paquet mod_ssl.

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

Mentre que a Ubuntu haureu d'habilitar el mòdul ssl per a Apache.

# a2enmod ssl

Els passos següents s'expliquen utilitzant un servidor de prova CentOS, però la vostra configuració hauria de ser gairebé idèntica a les altres distribucions (si trobeu qualsevol tipus de problema, no dubteu a deixar les vostres preguntes utilitzant els comentaris). forma).

Pas 1 [Opcional]: creeu un directori per emmagatzemar els vostres certificats.

# mkdir /etc/httpd/ssl-certs

Pas 2: genereu el vostre certificat autofirmat i la clau que el protegirà.

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

Una breu explicació de les opcions esmentades anteriorment:

  1. req -X509 indica que estem creant un certificat x509.
  2. -nodes (NO DES) significa \no encripteu la clau.
  3. -dies 365 és el nombre de dies durant els quals serà vàlid el certificat.
  4. -newkey rsa:2048 crea una clau RSA de 2048 bits.
  5. -keyout /etc/httpd/ssl-certs/apache.key és la ruta absoluta de la clau RSA.
  6. -out /etc/httpd/ssl-certs/apache.crt és la ruta absoluta del certificat.

Pas 3: obriu el fitxer de configuració de l'amfitrió virtual escollit (o la secció corresponent a /etc/httpd/conf/httpd.conf com s'ha explicat anteriorment) i afegiu les línies següents a una declaració d'amfitrió virtual que escolta al port 443.

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

Tingueu en compte que cal afegir.

NameVirtualHost *:443

a la part superior, just a sota

NameVirtualHost *:80

Ambdues directives indiquen a l'apache que escolti als ports 443 i 80 de totes les interfícies de xarxa.

L'exemple següent està extret de /etc/httpd/conf/httpd.conf:

A continuació, reinicieu Apache,

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

I dirigiu el vostre navegador a https://www.ilovelinux.com. Se us presentarà la següent pantalla.

Seguiu endavant i feu clic a \Entenc els riscos i a \Afegeix una excepció.

Finalment, marqueu \Desa permanentment aquesta excepció i feu clic a \Confirma l'excepció de seguretat.

I se us redirigirà a la vostra pàgina d'inici mitjançant https.

Resum

En aquesta publicació hem mostrat com configurar l'allotjament virtual Apache i basat en nom amb SSL per assegurar la transmissió de dades. Si per algun motiu us heu trobat amb algun problema, no dubteu a fer-nos-ho saber mitjançant el formulari de comentaris a continuació. Estarem encantats d'ajudar-vos a realitzar una configuració exitosa.

Llegiu també

  1. Allotjament virtual basat en IP d'Apache i basat en noms
  2. Creació d'amfitrions virtuals d'Apache amb opcions d'activació/desactivació de Vhosts
  3. Superviseu \Servidor web Apache mitjançant l'eina \GUI d'Apache