GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo habilitar HTTPS para Varnish Cache usando Hitch en CentOS-RHEL 8

Alijo de barniz carece de soporte nativo para SSL/TLS y otros protocolos asociados con el puerto 443 . Si está utilizando Varnish Cache para aumentar el rendimiento de su aplicación web, debe instalar y configurar otra pieza de software llamada SSL/TLS proxy de terminación, para trabajar junto con Varnish Cache para habilitar HTTPS .

El enganche es un proxy SSL/TLS escalable, gratuito, de código abierto y basado en libev diseñado para Varnish Cache , que actualmente funciona en Linux, OpenBSD, FreeBSD y MacOSX. Termina las conexiones TLS/SSL escuchando en el puerto 443 (el puerto predeterminado para HTTPS conexiones) y reenvía el tráfico sin cifrar a Varnish Cache , sin embargo, también debería funcionar con otros backends.

Es compatible con TLS1.2 y TLS1.3 y TLS 1.0/1.1 heredados , admite ALPN (Negociación de protocolo de capa de aplicación ) y NPN (Negociación del próximo protocolo ) para HTTP/2 , un protocolo PROXY para señalar la IP/puerto del cliente a un servidor, conexiones de socket de dominio UNIX al origen, SNI (Indicación de nombre de servidor ), con y sin certificados comodín. Además, funciona bien para grandes instalaciones que requieren hasta 15 000 tomas de escucha y 500.000 certificados.

Como continuación de nuestros dos artículos anteriores sobre la instalación de Varnish Cache para Nginx y Apache Servidores HTTP, esta guía muestra cómo habilitar HTTPS para caché de barniz usando proxy TLS de enganche en CentOS/RHEL 8 .

Diagrama lógico de nuestra configuración

Esta guía asume que ha instalado Varnish para Nginx o Apache servidor web, de lo contrario, consulte:

  • Cómo instalar Varnish Cache 6 para el servidor web Nginx en CentOS/RHEL 8
  • Cómo instalar Varnish Cache 6 para el servidor web Apache en CentOS/RHEL 8

Paso 1:Instale Hitch en CentOS/RHEL 8

1. El enganche el paquete se proporciona en el EPEL (Paquetes adicionales para Enterprise Linux ) repositorio. Para instalarlo, primero habilite EPEL en su sistema y luego instale el paquete a partir de entonces. Si no tiene OpenSSL paquete instalado, instálelo también.

# dnf install epel-release
# dnf install hitch openssl

Instalar Hitch en CentOS 8

2. Cuando se complete la instalación del paquete, deberá configurar Varnish Cache para trabajar Enganche . También necesita configurar Hitch para usar su SSL/TLS certificados y Barniz como back-end . El archivo de configuración principal de Hitch se encuentra en /etc/hitch/hitch.conf , que se explica a continuación.

Paso 2:Configuración de Varnish Cache para Hitch

3. A continuación, habilite Barniz para escuchar un puerto adicional (8443 en nuestro caso) usando el PROXY soporte de protocolo, para comunicaciones con Hitch .

Así que abre Varnish systemd archivo de servicio para editar.

# systemctl edit --full varnish

Busque la línea ExecStart y agregue un -a adicional marca con el valor 127.0.0.1:8443,proxy . Usando un valor de 127.0.0.1:8443 significa que Varnish solo aceptará la conexión interna (de los procesos que se ejecutan en el mismo servidor, es decir, el enganche en este caso), pero no las conexiones externas.

ExecStart=/usr/sbin/varnishd -a :80 -a 127.0.0.1:8443,proxy -f /etc/varnish/default.vcl -s malloc,256m 

Establecer puerto de escucha Varnish para enganche

Guarde el archivo y luego reinicie el servicio Varnish para aplicar los últimos cambios.

# systemctl restart varnish

Paso 3:Obtención de certificados SSL/TLS

4. En esta sección, explicaremos cómo crear el SSL/TLS paquete de certificados para usar bajo Hitch . Para esta guía, explicaremos las diferentes opciones de cómo usar un certificado autofirmado, un certificado comercial o uno de Let's Encrypt .

Para crear un certificado autofirmado (que solo debe usar en un entorno de prueba local), puede usar OpenSSL herramienta.

# mkdir /etc/ssl/tecmint.lan
# cd /etc/ssl/tecmint.lan/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout  tecmint.lan.key -out tecmint.lan.crt

Luego cree un paquete del certificado y la clave de la siguiente manera.

# cat tecmint.crt tecmint.key >tecmint.pem

Nota :para uso en producción, puede comprar un certificado de una autoridad de certificación comercial (CA ) o obtenga un certificado gratuito, automatizado y completamente reconocido de Let's Encrypt . Luego crea un paquete PEM.

Si compró un certificado de una CA comercial , debe fusionar la clave privada, el certificado y el paquete de CA como se muestra.

# cat example.com.key example.com.crt example.com-ca-bundle.crt > /etc/ssl/example.com.pem 

Para Let's Encrypt , el certificado, la clave privada y la cadena completa se almacenarán en /etc/letsencrypt/live/example.com/ , así que cree el paquete como se muestra.

# cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem >/etc/letsencrypt/live/example.com/example.com_bundle.pem

Paso 4:Configuración e inicio de enganche

5. A continuación, configure Varnish como backend para Hitch y especifica el SSL/TLS archivos de certificado para usar con HTTPS , en el Enganche archivo de configuración principal, ábralo para editarlo.

# vi /etc/hitch/hitch.conf

La frontal sección define las direcciones IP y el puerto Hitch escuchará. La configuración predeterminada es escuchar en todos los IPv4 y IPv6 interfaces conectadas en el servidor y se ejecuta en el puerto 443 y manejar HTTPS entrantes solicitudes, entregándoselas a Varnish .

Cambiar el backend predeterminado puerto proxy de 6086 a 8443 (el puerto utilizado para reenviar solicitudes a Varnish ) en el Enganche archivo de configuración, usando el backend parámetro. Además, especifique el archivo de certificado usando el pem-file parámetro como se muestra.

backend = "[127.0.0.1]:8443"
#pem-dir = "/etc/pki/tls/private"
pem-file = "/etc/ssl/tecmint.lan/tecmint.pem"

Configurar Hitch como proxy SSL/TLS para Varnish

Guarde el archivo y ciérrelo.

6. Ahora empieza el enganche servicio y habilítelo para que se inicie automáticamente al arrancar el sistema. Tenga en cuenta que --now switch cuando se usa con enable, también inicia un servicio systemd y luego verifica el estado para ver si está funcionando de la siguiente manera.

# systemctl enable --now hitch
# systemctl status hitch

Verificar estado de enganche

7. Antes de proceder a probar si su sitio web/aplicación ahora se ejecuta en HTTPS , debe permitir el HTTPS puerto de servicio 443 en el firewall para permitir que las solicitudes destinadas a ese puerto en el servidor pasen a través del firewall.

# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

Paso 5:Probar la terminación SSL/TLS con Varnish Cache-Hitch Setup

8. Ha llegado el momento de probar el enganche de caché de barniz. configuración. Abra un navegador web y use su dominio o IP del servidor para navegar a través de HTTPS .

https://www.example.com
OR
https://SERVER_IP/

Una vez que se haya cargado la página de índice de su aplicación web, verifique el HTTP encabezados para confirmar que el contenido se publica a través de Varnish Cache .

Para hacerlo, haga clic derecho en la página web cargada, seleccione Inspeccionar de la lista de opciones para abrir las herramientas de desarrollo. Luego haga clic en Red pestaña y Recargar la página, luego seleccione una solicitud para ver los encabezados HTTP, como se destaca en la siguiente captura de pantalla.

Compruebe la configuración de HTTPS en Varnish Cache

Paso 6:redirigir HTTP a HTTPS en Varnish Cache

9. Para ejecutar su sitio web en HTTPS solo, necesita redirigir todos los HTTP tráfico a HTTPS . Puede hacerlo agregando la siguiente configuración en su archivo de configuración de Hitch.

# vi /etc/hitch/hitch.conf 

Primero, agregue la línea import std; justo debajo de vlc 4.0; , luego busque el vlc_recv subrutina, que es la primera subrutina VCL ejecutada inmediatamente después de Varnish Cache ha analizado la solicitud del cliente en su estructura de datos básica. Es donde podemos modificar los encabezados de las solicitudes y ejecutar un sintetizador para redirigir las solicitudes de los clientes.

Modifíquelo para que se vea así.

sub vcl_recv {
    if (std.port(server.ip) != 443) {
        set req.http.location = "https://" + req.http.host + req.url;
        return(synth(301));
    }
}

Tenga en cuenta que el PROXY protocolo habilita Varnish para ver Hitch's puerto de escucha 443 desde el servidor.ip variable. Entonces la línea std.port(server.ip) devuelve el número de puerto en el que se recibió la conexión del cliente.

Si el puerto no es 443 para HTTPS (comprobado por (std.port(server.ip) !=443) ), la subrutina establecerá el encabezado de ubicación HTTP de la solicitud (establecer req.http.ubicación ) a una solicitud segura ("https:// ” + req.http.host + url requerida ) simplemente pidiéndole al navegador web que cargue un HTTPS versión de la página web (es decir, redirección de URL).

La Ubicación el encabezado se enviará a vcl_synth subrutina (que se llama usando return(synth(301)) ) con un código de estado HTTP de 301 (Movido permanentemente ).

10. A continuación, agregue la siguiente subrutina vcl_synth (uno de sus muchos casos de uso es redirigir a los usuarios), para procesar el sintetizador anterior.

sub vcl_synth {
        if (resp.status == 301) {
                set resp.http.location = req.http.location;
		  set resp.status = 301;
                return (deliver);
        }
}

Comprueba si el estado de la respuesta es 301 , el encabezado de ubicación HTTP en la respuesta se establece en el encabezado de ubicación HTTP en la solicitud que, de hecho, es una redirección a HTTPS y ejecuta una acción de entrega.

La acción deliver construye una respuesta con la respuesta del backend, almacena la respuesta en el caché y la envía al cliente.

Configurar Hitch para redirigir HTTP a HTTPS

Guarde el archivo y ciérrelo.

11. Una vez más, aplique los nuevos cambios en la configuración de Varnish reiniciando el servicio. Luego use la herramienta de línea de comando curl para confirmar la redirección desde HTTP a HTTPS .

# systemctl restart varnish
# curl -I http://eaxmple.com/

Compruebe la redirección de HTTP a HTTPS

Desde el navegador, la respuesta también es la misma que se muestra en la siguiente captura de pantalla.

Compruebe la redirección de HTTP a HTTPS en el navegador

Esperamos que todo haya funcionado bien hasta este punto. De lo contrario, deje un comentario o preguntas a través del formulario de comentarios a continuación. Para cualquier opción de configuración avanzada, vaya a la documentación de Varnish Cache y la documentación de Hitch.

Compartir es cuidar…
Compartir en FacebookCompartir en TwitterCompartir en LinkedinCompartir en Reddit
Cent OS
  1. Cómo instalar Varnish Cache en CentOS

  2. Cómo habilitar el registro de consultas lentas para MySQL

  3. Cómo instalar Varnish Cache 4 en CentOS 7

  4. Cómo instalar Varnish Cache en CentOS 8

  5. CentOS / RHEL:Cómo habilitar SSL para Apache

Cómo instalar Varnish Cache para Nginx en CentOS 8/Almalinux 8

Cómo instalar Varnish Cache para Apache en CentOS/RHEL 8

Cómo habilitar HTTPS para Varnish Cache usando Hitch en CentOS-RHEL 8

Cómo instalar Varnish Cache 6 para Nginx en CentOS/RHEL 8

Cómo acelerar Nginx con Varnish Cache en CentOS 7

Cómo acelerar Apache con Varnish Cache en CentOS 7