🛡️ Práctica: Asegurando el Servidor Web con HTTPS

Objetivo de la Práctica

El objetivo principal es asegurar el sitio web mediante la implementación de SSL/TLS (HTTPS). Esto implica:

Fase I: Preparación y Generación del Certificado

1. Habilitar Módulo SSL

Asegúrate de que el módulo SSL de Apache esté activado en el sistema.

sudo a2enmod ssl

2. Creación del Directorio de Certificados

Crea un directorio seguro para almacenar la clave privada y el certificado, manteniendo el orden en el sistema.

sudo mkdir /etc/apache2/ssl

3. Generación de Clave y Certificado

Utiliza OpenSSL para generar una clave privada (apache.key) y un certificado auto-firmado (apache.crt) en un solo paso. La clave tendrá una longitud de 2048 bits.

Nota Importante: Durante la generación, se te pedirá información. Asegúrate de que el campo "Common Name (CN)" coincida exactamente con el ServerName que usarás (ejemplo: pabloglezigl.es).
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Fase II: Configuración del Virtual Host Seguro

1. Creación del Virtual Host HTTPS

Copia la plantilla de configuración SSL predeterminada de Apache como punto de partida para tu dominio.

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/pabloglezigl.es-ssl.conf

Abre el nuevo archivo para editarlo:

sudo nano /etc/apache2/sites-available/pabloglezigl.es-ssl.conf

2. Edición del Virtual Host HTTPS

Dentro del bloque <VirtualHost *:443>, asegúrate de configurar lo siguiente:

SSLEngine on
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

3. Activación del Sitio HTTPS

Habilita la nueva configuración del sitio seguro.

sudo a2ensite pabloglezigl.es-ssl.conf

Fase III: Redirección de HTTP a HTTPS

1. Habilitar Módulo Rewrite

Es necesario activar el módulo de Apache responsable de las reescrituras de URL y redirecciones.

sudo a2enmod rewrite

2. Modificar el Virtual Host HTTP (Puerto 80)

Edita el archivo de configuración original del sitio inseguro.

sudo nano /etc/apache2/sites-available/pabloglezigl.es.conf

3. Implementar la Regla de Redirección

Dentro del bloque <VirtualHost *:80>, puedes eliminar las directivas de DocumentRoot, ya que este puerto solo servirá para redirigir. Añade el siguiente bloque:

# Redirección obligatoria a HTTPS
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</IfModule>
Explicación: Esto le dice a Apache: "Si el HTTPS está apagado, toma cualquier cosa que el usuario haya pedido (^(.*)$) y redirígelo a la misma dirección pero con https:// al principio, usando un código 301 (movido permanentemente)".

Fase IV: Verificación y Prueba Final

1. Comprobar Sintaxis y Reiniciar

Antes de reiniciar, verifica que no haya errores de sintaxis en los archivos de configuración.

sudo apache2ctl configtest

Si el resultado es "Syntax OK", reinicia Apache para aplicar todos los cambios.

sudo systemctl restart apache2

2. Prueba Final en el Navegador

  1. Accede a https://pabloglezigl.es. El navegador mostrará una advertencia de seguridad (es normal, ya que el certificado es auto-firmado). Acepta el riesgo y continúa. El sitio debe cargar y mostrar un candado (posiblemente rojo o tachado).
  2. Accede a la versión insegura: http://pabloglezigl.es. Confirma que el navegador te redirige automáticamente a la versión HTTPS.