Servicio Web

Configuración del servicio de Apache

Apache está dividido entre dos modelo (preforx y worker)

El modelo preforx conciste en que cada conexion inicia un nuevo proceso. Si tenemos un sitio con contenido texto y 4 imágenes, se crearán 5 proceso. Éste no se aconseja salvo que se este ofreciendo contenido php.

El modelo worker, en cambio, trabaja con hilos o threads de ejecución. Un proceso puede atender varias conexiones simultaneas.
Esto mejora la carga de conexiones y el tiempo de respuesta.

En general se prefiere el worker sobre el preforx.

El modelo a utilizar se define el modelo en el directorio

/etc/sysconfig/httpd para Redhat y derivados o en
/etc/sysconfig/apache2 para Debian o derivados.

Configuración

/etc/httpd
/etc/apache2 -> ServerRoot

Dentro del ServerRoot vamos a tener configuraciones, logs, modulos
el log del ServerRoot apunta a /var/log/httpd

cualquier ruta del archivo de configuracion que no empiece con / toma la ruta en base al ServerRoot.
El archivo principal es el /etc/httpd/conf/httpd.conf
Dividido en 3 Secciones:

1. Configuracion del propio daemon de apache.
2. Sitio por defecto.
3. Virtualhost.

vim /etc/httpd/vhost.d/ejemplo.conf

Virtualhosts

Virtualhost
Virtualhost

 

El primer virtual host siempre es el sitio por defecto.

Se recomienda utilizar un archivo para cada virtual host para poder organizarnos de mejor manera si es un servidor que aloja varios sitios web. Esto lo incluimos luego de NameVirtualHost
con la siguiente linea

Include vhosts.d/*.conf

Dentro del directorio vhosts.d (/etc/hhtpd/conf.d/) se encontrarán entre otros los archivos .conf que contendrán cada VirtualHost.

Certificados SSL

Para generarlos utilizaremos openssl

Primero generaremos una clave y luego un certificado.

Un certificado puede ser autofirmado
o firmado por una CA
(Agencia Certificadora)

mod_ssl es el modulo de apache para ssl
con el que vamos a trabajar.

Primero creamos un directorio con lectura y acceso solo para root en donde guardaremos nuestros certificados.

mkdir -m 700 /etc/ssl
mkdir -m 700 /etc/ssl/ejemplo.com.uy

Se debe crear un certificado por cada sitio alojado.

GENERAMOS LA CLAVE

openssl genrsa -des3 -out /etc/ssl/ejemplo.com.uy/server.key 1024

clave con el algoritmo rsa encriptada con des3 con un largo de 1024 bits.

a partir de esa clave generamos una version sin contraseña.

openssl rsa -in  /etc/ssl/ejemplo.com.uy/server.key  /etc/ssl/ejemplo.com.uy/server.pem

GENERAMOS EL CERTIFICADO

 

openssl req -new -key /etc/ssl/ejemplo.com.uy/server.key -out /etc/ssl/ejemplo.com.uy/server.csr

csr (certificate sign request)

esto pide datos en general de la organización, debemos prestar especial atencion al “common name” que es donde definimos el sitio al cual el sertificado va a estar configurado. (En este caso www.ejemplo.com.uy
)

AUTOFIRMADO

openssl x509 -req -days 365 -in /etc/ssl/ejemplo.com.uy/server.csr -signkey /etc/ssl/ejemplo.com.uy/server.key -out /etc/ssl/ejemplo.com.uy/server.crt

Firmamos el certificado con nuestra clave.

AGREGAMOS AL APACHE

Apache ya tiene una configuracion de ssl en /etc/httpd/conf.d/mod_ssl.conf

Carga el modulo, define cifrados, y un virtualhost con ssl configurado como ejemplo.
comentamos el virtualhost de ese archivo para evitar conflictos y dentro del con.d dónde configuramos el virtualhost, agregamos lo siguiente

NameVirtualHost *:443

ServerAdmin webmaster@ejemplo.com.uy
DocumentRoot /var/www/ejemplo.com.uy
ServerName www.ejemplo.com.uy
sslEngine on
sslCertificateFile /etc/ssl/ejemplo.com.uy/server.crt
sslCertificateKeyFile /etc/ssl/ejemplo.com.uy/server.pem

Comandos útiles del httpd

/etc/init.d/httpd graceful
apachectl graceful

graceful: reincia a medida que se cierran conexiones.
configtest lee la configuracion
y nos dice si está OK o no.
httpd -l lista los modulos habilitados
httpd -M modulos cargados
httpd -S muestra los virtualhost configurados

.htacccess

El archivo .htaccess es un archivo que sirve para establecer parámetros de configuración dentro de un directorio sin tener que escribir en el httpd.conf.
Esto es una herramienta útil para los webmasters que a veces necesitan una determinada configuración en un directorio, como por ejemplo para proteger el mismo con usuario y contraseña.