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

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

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

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

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

Como continuación de nuestros dos artículos anteriores sobre la instalación Varnish Cache. para servidores HTTP Nginx. y Apache. esta guía muestra cómo habilitar HTTPS. para Varnish Cache. usando Hitch TLS Proxy. en CentOS/RHEL 8.

 Diagrama lógico de nuestra configuración  Diagrama lógico de Nuestra configuración Logical Di programa de nuestra configuración

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

  • Cómo instalar Varnish Cache 6 para Nginx Web Server en CentOS/RHEL 8
  • Cómo instalar Varnish Cache 6 para Apache Web Server en CentOS/RHEL 8

Paso 1: Instale Hitch en CentOS/RHEL 8

freestar.config.enabled_slots.push

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

# dnf install epel-release # dnf install hitch openssl  Instalar Hitch en CentOS 8 Instalar Hitch en CentOS 8 Instalar Hitch en CentOS 8

2.. Cuando se complete la instalación del paquete, tendrá que configurar Varnish Cache. para que funcione Hitch. También debe configurar Hitch. para utilizar sus certificados SSL/TLS. y Varnish. como backend. El archivo de configuración principal de Hitch se encuentra en /etc/hitch/hitch.conf. que se explica a continuación.

Paso 2: Configurar Varnish Cache para Hitch

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

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

# systemctl edit–full varnish

Busque la línea ExecStart. y agregue un indicador-a adicional con el valor 127.0 .0.1: 8443, proxy. Usar un valor de 127.0.0.1:8443. significa que Varnish solo aceptará la conexión interna (de procesos que se ejecutan en el mismo servidor, es decir, enganche en este caso) pero no 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 de barniz para el enganche  Establecer puerto de escucha de barniz para el enganche Establecer puerto de escucha de Varnish para Hitch

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

# systemctl restart varnish

Paso 3: Obtener SSL/Certificados TLS

4.. En esta sección, explicaremos cómo crear el paquete de certificados SSL/TLS. que se utilizará en Hitch . Para esta guía, explicaremos las diferentes opciones de cómo utilizar un certificado autofirmado, 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 la herramienta OpenSSL.

# 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 certificadora comercial. ( CA. o obtenga un certificado gratuito, automatizado y totalmente reconocido de Let’s Encrypt. Luego, cree 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, clave privada y la cadena completa se almacenará 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 Hitch

5.. A continuación, configure Varnish. como backend para Hitch. y especifique SSL/TLS. archivos de certificado que se utilizarán para HTTPS. en el archivo de configuración principal de Hitch. ábralo para editarlo.

# vi/etc/hitch/hitch.conf

El frontend. define las direcciones IP y el puerto. que Hitch escuchará. La configuración predeterminada es escuchar en todas las interfaces IPv4. e IPv6. conectadas al servidor y se ejecuta en el puerto 443. y maneja los HTTPS solicitudes, pasándolas a Varnish.

Cambie el puerto proxy del backend. predeterminado de 6086. a 8443. (el puerto utilizado para reenviar solicitudes a Varnish. en el archivo de configuración Hitch. utilizando el parámetro backend. Además, especifique el archivo de certificado utilizando el parámetro pem-file. 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 SSL/Proxy TLS para barniz  Configurar Hitch como proxy SSL/TLS para barniz Configurar Hitch como Proxy SSL/TLS para Varnish

Guarde el archivo y ciérrelo.

6.. Ahora inicie el servicio hitch. y habilítelo para que se inicie automáticamente al iniciar el sistema. Tenga en cuenta que el interruptor–now cuando se usa con enable, también inicia un servicio systemd y luego verifica el estado para ver si está en funcionamiento de la siguiente manera.

# systemctl enable–now hitch # systemctl status hitch  Verificar estado del enganche  Verificar el estado del enganche Verificar el estado del enganche

7.. Antes de proceder a probar si su sitio web/aplicación ahora se está ejecutando en HTTPS. debe permitir 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.. Ahora es el momento de probar Varnish Cache-Configuración del enganche. Abra un navegador web y use la IP de su dominio o servidor para navegar sobre HTTPS.

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

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

Para hacerlo, haga clic con el botón derecho en la página web cargada, seleccione Inspeccionar. de la lista de opciones para abrir las herramientas para desarrolladores. Luego, haga clic en la pestaña Red. y Recargue. la página, luego seleccione una solicitud para ver los encabezados HTTP, como se resalta en la siguiente captura de pantalla.

 Verifique la configuración de HTTPS en Varnish Cache Verifique la configuración de HTTPS en Varnish Cache Compruebe la configuración de HTTPS en Varnish Cache

Paso 6: Redirigir HTTP a HTTPS en Varnish Cache

9.. Para ejecutar su sitio web solo en HTTPS. debe redirigir todo el tráfico HTTP. a HTTPS. Puede hacer esto 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. que es la primera subrutina de VCL que se ejecuta inmediatamente después de que Varnish Cache. haya 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 del cliente.

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 (sintetizador (301));

Tenga en cuenta que el protocolo PROXY. permite que Varnish. vea el puerto de escucha 443. de Hitch. desde el variable server.ip. 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. (como lo verifica (std.port (server.ip)! = 443). , la subrutina establecerá el encabezado de ubicación HTTP de la solicitud ( set req .http.location. a una solicitud segura (“ https://” + req.http.host. + req.url. simplemente pidiendo al navegador web que cargue una versión HTTPS. de la página web (es decir, redirección de URL).

El encabezado Ubicación. se enviará a la subrutina vcl_synth. (que se llama usando return (sintetizador (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 la redirección de usuarios), para procesar el sintetizador anterior.

sub v cl_synth if (resp.status == 301) set resp.http.location = req.http.location; set resp.status = 301; volver (entregar);

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 entrega. acción.

La acción de entrega crea una respuesta con la respuesta del backend, almacena la respuesta en la caché y la envía al cliente.

 Configurar Hitch para redirigir HTTP a HTTPS  Configurar Hitch para redirigir HTTP a HTTPS 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 comandos curl para confirmar la redirección de HTTP. a HTTPS.

# systemctl restart varnish # curl-I http://eaxmple.com/ Verificar HTTP a HTTPS Redirect  Verificar HTTP a HTTPS Redirigir Verificar HTTP a HTTPS Redirigir

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