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