Búsqueda de sitios web

Cómo redirigir HTTP a HTTPS en Apache


HTTP (Protocolo de transferencia de hipertexto) es un protocolo popular y fundamental para la comunicación de datos en la World Wide Web (WWW ); normalmente entre un navegador web y el servidor que almacena los archivos web. Mientras que HTTPS es la versión segura de HTTP, donde la 'S' al final significa 'Seguro'.

Al utilizar HTTPS, todos los datos entre su navegador y el servidor web se cifran y, por tanto, son seguros. Este tutorial le mostrará cómo redirigir HTTP a HTTPS en el servidor HTTP Apache en Linux.

Antes de poder configurar un Apache HTTP para redirigir HTTPS para su dominio, asegúrese de tener el certificado SSL instalado y mod_rewrite. está habilitado en Apache. Para obtener más información sobre cómo configurar SSL en Apache, consulte las siguientes guías.

  1. Cómo crear claves y certificados SSL autofirmados para Apache
  2. Cómo instalar el certificado SSL Let's Encrypt en CentOS/RHEL 7
  3. Cómo instalar el certificado SSL Let's Encrypt en Debian/Ubuntu

Redirigir HTTP a HTTPS en Apache usando el archivo .htaccess

Para este método, asegúrese de que mod_rewrite esté habilitado; de lo contrario, habilítelo así en sistemas Ubuntu/Debian.

sudo a2enmod rewrite	[Ubuntu/Debian]

Para usuarios de CentOS/RHEL, asegúrese de tener la siguiente línea en httpd.conf (soporte mod_rewrite: habilitado de forma predeterminada).

LoadModule rewrite_module modules/mod_rewrite.so

Ahora sólo necesita editar o crear el archivo .htaccess en el directorio raíz de su dominio y agregar estas líneas para redirigir http a https.

RewriteEngine On 
RewriteCond %{HTTPS}  !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

Ahora, cuando un visitante escribe http://www.yourdomain.com, el servidor redirigirá automáticamente HTTP a HTTPS https://www.yourdomain.com.

Redirigir HTTP a HTTPS en el host virtual Apache

Además, para forzar que todo el tráfico web utilice HTTPS, también puede configurar su archivo de host virtual. Normalmente, hay dos secciones importantes en las configuraciones de un host virtual si un certificado SSL está habilitado; el primero contiene configuraciones para el puerto no seguro 80.

El segundo es para el puerto seguro 443. Para redirigir HTTP a HTTPS para todas las páginas de su sitio web, primero abra el archivo de host virtual apropiado. Luego modifíquelo agregando la configuración a continuación.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName www.yourdomain.com
   Redirect / https://www.yourdomain.com
</VirtualHost>

<VirtualHost _default_:443>
   ServerName www.yourdomain.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
etc...
</VirtualHost>

Guarde y cierre el archivo, luego reinicie el servidor HTTP de esta manera.

sudo systemctl restart apache2     [Ubuntu/Debian]
sudo systemctl restart httpd	     [RHEL/CentOS]

Mientras que el es la solución más recomendada porque es más sencilla y segura.

Quizás le interese leer esta útil variedad de artículos sobre refuerzo de seguridad del servidor Apache HTTP:

  1. 25 trucos útiles de Apache '.htaccess' para proteger y personalizar sitios web
  2. Cómo proteger con contraseña directorios web en Apache usando el archivo .htaccess
  3. Cómo ocultar el número de versión de Apache y otra información confidencial
  4. Proteja Apache contra ataques de fuerza bruta o DDoS utilizando Mod_Security y Mod_evasive

¡Eso es todo! Para compartir cualquier idea sobre esta guía, utilice el formulario de comentarios a continuación. Y recuerda estar siempre conectado a linux-console.net.