Instalación y configuración de un servidor web, Apache2 + SSL

21 noviembre 2008 Publicado por David Rodriguez
Apache es el más comun de los servidores web en entorno Linux. Se acostumbra a usar junto con el servidor de base de datos MySQL i lenguajes de script de servidor como PHP, Perl, o Phyton. Esta configuración se llama LAMP ( Linux, Apache, Mysql y Php/Perl/Phyton ).

Instalación

Executaremos en el terminal la siguiente instrucción:

# sudo apt-get install apache2

Un a vez instalado el servicio comprovar que funciona accediendo a la url.

# http://localhost

Configuración

Apache se configura poniendo directivas en texto plano en los ficheros de configuración.
El principal fichero de configuración se llama apache2.conf y se encuentra en la ruta /etc/apache2/apache2.conf. Todos los cambios que se hacen sobre el fichero de configuración solo tendrán efecto despues de iniciar o reiniciar el servicio.

Configuraciones básicas:
· Hosts Virtuales: Se pueden crear diferentes hosts virtuales en el caso que nuestra máquina diera el servicio de servidor a diferentes usuarios. Esto se usa usando la directiva de VirtualHost.
Para modificar el host virtual por defecto tendremos que editar el fichero /etc/apache2/sites-available/default i configurar algunas de las directivas que se describen acountinuación:
· ServerAdmin: E-mail del administrador donde se envían los posibles errores o problemas del servidor.
· Listen: Especifica el puerto, i opcionalmente la dirección IP, a traves del qual apache2 tiene que escuchar las peticiones.
· DocumentRoot: Especifica el sitio el cual apache2 tiene que buscar los ficheros del sitio web.
· DirectoryIndex: Es la página por defecto proporcionada por el servidor cuando un usuario busque un directorio
· ErrorDocument: Nos permite especificar un fichero para mostrar en el caso que se produzcan errores.
· CustomLog: En principio, apache2 escribre el log en /var/log/apache2.log. Se puede cambiar usando esta directiva en la configuración de hosts virtuales.

Crear un servidor web seguro. (https)

El módulo libapache-mod-ssl se añade en apache2 server la capacidad de encriptar las comunicaciones usando el protocolo https.

Instalar el módulo con este código:

# apt-get instal libapache-mod-ssl

y para activarlos usar:

# sudo a2enmod ssl

Para crear un servidor seguro será necesario crear una clave con un criptosistema asimétrico. Nosotros crearemos un certificado firmado por nosotros mismos, este tipo de certificados no son aceptados inmediatamente por el navegador, sino que pide permiso al usuario para continuar la carga de la página. Los otros tipos de vertificados son los que asignan las entidades certificadoras i són los verdaderamente válidos.

Generación de las claves: generaremos las claves i las almacenaremos en el fichero server.key. En la generación nos pide una password, no la olvides!!!

# openssl genrsa -des3 -out server.key 1024

Creación del archivo de petición de signatura: lo que haremos será crear un archivo que contiene nuestras llaves con el formato adecuado por el cual estes signadas y se puedan crear un certificado. Después tenemos la posibilidad que esta petición nos la firme una entidad certificadora o nosotros mismos. El archivo de petición lo llamaremos server.csr.

# openssl req -new -key server.key -out server.csr

Creación de un certificado autoasignado: El certificado se almacena en el archivo sercer.crt.

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


Instalación del certificado: podemos instalar el certificado y las claves usando los siguientes comandos.

# sudo cp server.crt /etc/ssl/certs/
# sudo cp server.key /etc/ssl/private


Ahora tendremos que añadir las siguientes lineas a este archivo /etc/apache2/sites-available/default dentro de la sección de VirtualHost.

SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key


Creador David Martín (esedark)