HTTPS sobre Apache: cómo configurar un host virtual seguro

Los hosts virtuales que hemos visto hasta el momento utilizan el protocolo HTTP. Bajo esas condiciones, el tráfico de datos entre el servidor web y el cliente que accede al mismo se realiza sin encriptar. Por consiguiente, basta utilizar Wireshark para identificar y leer la información intercambiada sin mayores dificultades. Por eso, en este post y en el próximo mostraremos cómo utilizar HTTPS sobre Apache.

HTTPS sobre Apache

El propósito de utilizar HTTPS sobre Apache es proteger los datos en tránsito mediante cifrado. Pensemos en lo trágico que sería si nuestras contraseñas o información bancaria cayera en manos malintencionadas. Como visitantes a un sitio donde ingresaremos este tipo de datos, debemos fijarnos que el mismo utilice HTTPS. Esto se puede distinguir mediante la presencia de un candado en la barra de direcciones, como podemos observar en la Fig. 1:

HTTPS sobre Apache en el sitio del Banco Nación de Argentina
Figura 1 – HTTPS sobre Apache en el sitio del Banco Nación de Argentina

Además, como administradores de un sitio web, es nuestra responsabilidad generar confianza en nuestros visitantes mediante la misma implementación. Para convertir el virtual host aguantecla.com a HTTPS, primero cambiaremos el bloque de configuración de la siguiente manera.

Recordemos que el mismo se encuentra en /etc/apache2/sites-available/aguantecla.com.conf:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    ServerAdmin webmaster@aguantecla.com
    ServerName aguantecla.com
    ServerAlias www.aguantecla.com
    DocumentRoot /var/www/aguantecla.com/public_html/
    ErrorLog /var/www/aguantecla.com/logs/error.log
    LogLevel warn
    CustomLog /var/www/aguantecla.com/logs/access.log combined
</VirtualHost>

En síntesis, reemplazamos el puerto de escucha (80 por 443) y agregamos las líneas que contienen las siguientes directivas SSLEngine, SSLCertificateFile, y SSLCertificateKeyFile. Dichas directivas habilitan el uso de SSL e indican la ubicación del certificado y de la clave que se utilizarán para cifrar la transferencia de datos. Finalmente, anotaremos las rutas y guardaremos los cambios en el archivo. Sin embargo, no reiniciaremos Apache todavía debido a que no hemos creado estos recursos.

La presencia de HTTPS también permite identificar seguramente el servidor web. De esta manera podemos tener la seguridad de que estamos accediendo al servidor correcto y no a uno con propósitos maliciosos.

En el próximo post pondremos en funcionamiento un host virtual seguro. ¡No se lo pierdan!