Maurotech

BLOG TI Sistemas y Diseño

Linux

Redirigir HTTP a HTTPS con Apache2

En un servidor Apache pueden convivir sin problemas para una misma web HTTP y HTTPS, pero puede resultar interesante que todo el tráfico solicitado por HTTP, muy inseguro, se redirija a una conexión segura como es HTTPS .
Vamos a forzar al servidor a que siempre utilice HTTPS, y que no envíe nada a través de HTTP.

Esta configuración es válida para Debian o distribuciones basadas en Debian.

Lo primero que debemos de hacer es la configuración de HTTPS, aquí teneis el enlace de cómo hacerlo.
Una vez que tenemos funcionando HTTP y HTTPS, debemos de habilitar el modulo de Apache2 mod_rewirte, con el comando:

a2enmod rewrite

Si el comando no funciona es porque a2enmod viene en el paquete apache2.2-common por lo que tendrías que instalarlo y luego ejecutar de nuevo el comando anterior:

 apt-get install apache2.2-common

Hecho esto, editamos el archive default ó 000-default de la carpeta /etc/apache2/sites-available:

nano /etc/apache2/sites-available/default

Cambiamos toda la configuración del archivo por esto:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

Yo, personalmente, prefiero configurar todo en el archivo default, tanto HTTP como HTTPS, pasando del archivo default-ssl, por lo cual mi archivo default es este:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

<VirtualHost *:443>
DocumentRoot /var/www
SSLEngine On
SSLCertificateFile /etc/ssl/certs/apache2.pem
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

<Directory "/var/www">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
SSLRequireSSL
</Directory>

Bueno, pues cuando tengamos esto hecho, reiniciamos el apache:

/etc/init.d/apache2 restart

Y listo, si vamos a nuestro servidor con http://IPservidor nos envía a https://IPservidor

Loading