GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo forzar a Apache a usar HTTPS

Hola chicos ! En este tutorial, mostraremos cómo redirigir a la fuerza Apache HTTP a HTTPS

Si es propietario de un sitio web o administrador del sistema, lo más probable es que esté tratando con Apache de forma regular. Una de las tareas más comunes que probablemente realizará es redirigir el tráfico HTTP a la versión segura (HTTPS) de su sitio web.

A diferencia de HTTP, donde las solicitudes y respuestas se envían y devuelven en texto sin formato, HTTPS utiliza TLS/SSL para cifrar la comunicación entre el cliente y el servidor.

Veremos esto de dos maneras diferentes:

i. Uso de alojamiento virtual.

ii. Usando .htaccess

Empecemos

Uso de alojamiento virtual

En la directiva de host virtual, puede especificar la raíz del documento del sitio (el directorio que contiene los archivos del sitio web), crear una política de seguridad separada para cada sitio, usar diferentes certificados SSL, configurar la redirección y mucho más.

Cuando se instala un certificado SSL en un dominio, tendrá dos directivas de host virtual para ese dominio. El primero para la versión HTTP del sitio en el puerto 80 y el otro para la versión HTTPS en el puerto 443.

En las distribuciones basadas en Red-Hat, como CentOS y Fedora, los archivos de host virtual se almacenan en /etc/httpd/conf.d. Mientras que en Debian y sus derivados como Ubuntu, los archivos se almacenan en /etc/apache2/sites-available directorio.

Para redirigir un sitio web a HTTPS, use el Redirect directiva como se muestra en el ejemplo “unixcop.com”

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

  Redirect permanent / https://unixcop.com/
</VirtualHost>

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

  Protocols h2 http/1.1

</VirtualHost>

Explicación

Vamos a tener una explicación del código anterior

  • VirtualHost *:80 – El servidor Apache escucha las conexiones entrantes en el puerto 80 (HTTP) para el dominio especificado.
  • VirtualHost *:443 – El servidor Apache escucha las conexiones entrantes en el puerto 443 (HTTPS) para el dominio especificado.

El ServerName y ServerAlias Las directivas especifican los nombres de dominio del host virtual. Asegúrese de reemplazarlo con su nombre de dominio. (en nuestro caso unixcop.com)

La línea resaltada, Redirect permanent / https://example.com/ dentro del host virtual HTTP, redirige el tráfico a la versión HTTPS del sitio.

Por lo general, también desea redirigir la versión HTTPS www del sitio a la que no es www o viceversa. Aquí hay una configuración de ejemplo:

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

  Redirect permanent / https://unixcop.com/
</VirtualHost>

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

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.unixcop.com'">
    Redirect permanent / https://unixcop.com/
  </If>

</VirtualHost>

El código anterior está comprobando si el encabezado de la solicitud contiene el dominio www y redirige a la versión que no es www.

Cada vez que realice cambios en los archivos de configuración, debe reiniciar o recargar el servicio Apache para que los cambios surtan efecto

.htaccess es un archivo de configuración por directorio para el servidor web Apache. Este archivo se puede usar para definir cómo Apache sirve archivos desde el directorio donde se coloca el archivo y para habilitar/deshabilitar funciones adicionales.

Por lo general, el .htaccess El archivo se coloca en el directorio raíz del dominio, pero puede tener otro .htaccess archivos en los subdirectorios.

Este método requiere el mod_rewrite módulo para ser cargado en el servidor Apache. Este módulo se carga de forma predeterminada en la mayoría de los servidores. Si es posible, prefiera crear una redirección en el host virtual porque es más simple y seguro.

Para redirigir todo el tráfico HTTP a HTTPS, abra la raíz .htaccess y agréguele el siguiente código

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Explicación

  • RewriteEngine On – habilita las capacidades de reescritura.
  • RewriteCond %{HTTPS} off – comprueba la conexión HTTP y, si se cumple la condición, se ejecuta la siguiente línea.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – redirigir HTTP a HTTPS con el código de estado 301 (Movido permanentemente).

El siguiente ejemplo tiene una condición adicional que verifica si la solicitud comienza con www . Úselo para obligar a todos los visitantes a usar la versión HTTPS no www del sitio

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Al editar .htaccess archivo, no necesita reiniciar el servidor porque Apache lee el archivo en cada solicitud.

Entonces, ya sabe cómo obligar a Apache a usar HTTPS.

Documentación de Apache


Linux
  1. ¿Cómo hacer que Apache use Php 7.0 (no 7.1)?

  2. ¿Cómo instalar Apache en Ubuntu?

  3. Cómo habilitar y forzar HTTPS con Plesk

  4. cómo usar pylint en vim

  5. ¿Cómo redirigir automáticamente HTTP a HTTPS en servidores Apache?

Cómo usar el comando PS

Cómo usar el comando SUPERIOR

Cómo habilitar Forzar redirección HTTPS en cPanel

¿Cómo usar Apache SpamAssassin en cPanel?

Cómo instalar Apache en Ubuntu 20.04

¿Cómo forzar HTTPS para mi dominio?