Configurar SSL en Apache

Introducción

Hola a los muy pocos que leen, en este tutorial vamos a aprender a configurar nuestro servidor Apache para que soporte SSL.

Vamos a configurar Apache bajo Ubuntu, aunque ya sabéis, podéis usar cualquier otra distro GNU/Linux. De paso digo que en este tutorial no voy a explicar cómo instalar Apache ni cómo crear host virtuales basados en nombre. Si queréis saber cómo se hace echadle un ojo a mi otro tutorial.

¿Qué es SSL?

SSL (Secure Socket Layer) es un protocolo criptográfico que proporciona una comunicación segura en internet. El protocolo SSL intercambia registros y cada registro puede ser comprimido, cifrado y empaquetado, se ejecuta en una capa entre los protocolos HTTP, SMTP, NNTP y sobre el protocolo de transporte TCP.

Comenzó a usarse en 1996 por Netscape y actualmente es aprobado por la mayoría de entidades financieras para el comercio por internet.

Habilitando el módulo SSL y creando el certificado

Para habilitar el módulo SSL, tecleamos en un terminal lo siguiente:

sudo a2enmod ssl

Y después habilitamos este módulo también:

sudo a2enmod rewrite

Una vez habilitados los módulos anteriormente mencionados, reiniciamos Apache:

sudo apache2ctl restart

Bien, ahora pasamos a la creación del certificado SSL. Antes de empezar, necesitamos instalar unos paquetes necesarios, en un terminal tecleamos lo siguiente:

sudo aptitude install openssl openssl-blacklist openssl-blacklist-extra

Una vez instalado el paquete, en el terminal tecleamos lo siguiente para crear el certificado SSL:

sudo openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Ahora nos hará una serie de preguntas, las respondemos y ya tendremos nuestro certificado creado.

Configurando SSL

Ya tenemos el certificado creado e instalado en /etc/apache2/apache.pem. Ahora vamos a modificar el fichero /etc/apache2/sites-available/websegura. Nos vamos a un terminal y escribimos:

sudo gedit /etc/apache2/sites-available/websegura

Una vez con el archivo abierto, lo dejamos de esta forma:

<VirtualHost *:443>
    ServerName www.websegura.com
    LogLevel warn
    ErrorLog /var/log/apache2/www.websegura.com.error.log
    CustomLog /var/log/apache2/www.websegura.com.access.log combined

    DocumentRoot /var/www/www.websegura.com

    <Directory /var/www/www.websegura.com>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    SSLEngine On
    SSLCertificateFile    /etc/apache2/apache.pem
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>

Vamos ahora configurar Apache para que escuche también por el puerto 443. En un terminal tecleamos:

sudo gedit /etc/apache2/ports.conf

Borramos todo el contenido del archivo, y lo dejamos de la siguiente forma:

NameVirtualHost *:80
Listen 80
NameVirtualHost *:443
Listen 443

Ahora toca modificar el archivo /etc/apache2/sites-available/default. En un terminal escribimos:

sudo gedit /etc/apache2/sites-available/default

Y ahora comenzamos a introducir estos fragmentos de código al archivo, en las zonas especificadas.

Al principio:


NameVirtualHost   *:80
NameVirtualHost   *:443

Después de DocumentRoot  /var/www:

DocumentRoot /var/www
RewriteEngine On
RewriteLog /var/log/apache2/https_rewrite.log
RewriteLogLevel 1
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

<Directory />

Al final del fichero:

</VirtualHost>
<VirtualHost *:443>
    DocumentRoot /var/www/websegura
    ErrorLog /var/log/apache2/error.log
    SSLEngine on
    SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

NOTA: No olvides modificar el fichero /etc/hosts. En el tutorial Apache: Configuración de hosts basados en nombres explico qué hay que hacer.

Ahora sólo queda reiniciar Apache para que la configuración se aplique. Desde el terminal:

sudo apache2ctl restart

Verificando el funcionamiento

Para comprobar que todo el proceso está correcto, debemos abrir el navegador y visitar http://www.websegura.com, si todo está correcto, veremos algo así:

Ahora debemos dar la excepción de seguridad al navegador, para poder acceder al sitio web. Pulsamos en Entiendo los riesgos.

Ahora hacemos click en Añadir excepción.

Se nos abre una ventana nueva, esta vez pulsamos en Confirmar excepción de seguridad.

Una vez hecho eso, sorpresa. Nuestra web con SSL.

Un candado en la esquina inferior derecha, nos proporciona información acerca la entidad que ha firmado el certificado, en este caso, nosotros mismos.

Bibliografía

Anuncios
Publicado en Apache, Seguridad, Tutoriales

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: