Crear un sitio web HTTPS para Apache

última modificación:

Una vez creado el certificado (ver Crear un certificado SSL autofirmado), hay que configurar Apache para servir el sitio por HTTPS. Tendremos que editar el archivo /etc/apache2/ports.conf para que quede así:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
  NameVirtualHost *:443
  Listen 443
</IfModule>

A continuación, tendremos que crear un archivo nuevo en /etc/apache2/sites-available para el nuevo sitio web. Por ejemplo podemos llamarlo site-https. El archivo debe contener dos bloques: uno para el puerto 80 que redirige todo el tráfico a HTTPS:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
</VirtualHost>

Y otro para el puerto 443 con la configuración SSL y las rutas de los archivos que creamos en crear un certificado SSL autofirmado:

<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com

    DocumentRoot /var/www/

    <IfModule mod_ssl.c>
        SSLEngine on
        SSLCertificateFile    /etc/ssl/private/miservidor.crt
        SSLCertificateKeyFile /etc/ssl/private/miservidor.key
    </IfModule>
</VirtualHost>

Una vez creado el archivo, habilitamos el nuevo sitio, activamos los módulos SSL y rewrite, y forzamos a Apache a leer la nueva configuración:

sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2ensite site-https
sudo /etc/init.d/apache2 force-reload

Y si todo ha ido bien, ya tenemos nuestro sitio disponible por HTTPS.