Cómo habilitar HTTPS para caché de barniz usando enganche en centos-rhel 8

Cómo habilitar HTTPS para caché de barniz usando enganche en centos-rhel 8

Caché de barniz carece de apoyo nativo para SSL/TLS y otros protocolos asociados con el puerto 443. Si estas usando Caché de barniz 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 Caché de barniz para permitir Https.

El Enganche es un proxy SSL/TLS basado en Libev, basado en libv y escalable diseñado para Caché de barniz, 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 Caché de barniz, Sin embargo, también debería funcionar con otros backends.

Es compatible con TLS1.2 y TLS1.3 y legado TLS 1.0/1.1, soporte Alpn (Negociación del protocolo de la capa de aplicación) y NPN (Siguiente negociación del protocolo) para Http/2, Un protocolo proxy para señalar IP/puerto del cliente a un backend, las conexiones de socket de dominio Unix al origen, SNI (Indicación del nombre del servidor), con y sin certificados de comodín. Además, funciona bien para grandes instalaciones que requieren hasta 15,000 escuchando enchufes y 500,000 certificados.

Como continuación de nuestros dos artículos anteriores sobre la instalación Caché de barniz para Nginx y apache Servidores HTTP, esta guía muestra para habilitar Https para Caché de barniz usando Proxy de enganche TLS en CentOS/RHEL 8.

Diagrama lógico de nuestra configuración

Esta guía asume que ha instalado Barniz para Nginx o apache servidor web, de lo contrario, ver:

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

Paso 1: Instale el enganche 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 tu no tienes Openssl Paquete instalado, instálelo también.

# DNF Instalar Epel-Lelease # DNF Install Hitch OpenSSL 
Instalar Hitch en Centos 8

2. Cuando se complete la instalación del paquete, deberá configurar Caché de barniz trabajar Enganche. También necesitas configurar Enganche para usar tu SSL/TLS certificados y Barniz como un backend. El archivo de configuración principal de Hitch se encuentra en /etc/enganche/enganche.confusión, que se explica a continuación.

Paso 2: Configuración de caché de barniz para enganche

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

Así que abre el barniz system archivo de servicio para editar.

# SystemCTL Edit -Varizante Full 

Busque la línea Exectard y agregar un adicional -a bandera con el valor 127.0.0.1: 8443, proxy. Usando un valor de 127.0.0.1: 8443 significa que el barniz solo aceptará la conexión interna (desde los procesos que se ejecutan en el mismo servidor i.E enganche en este caso) pero no conexiones externas.

Execstart =/usr/sbin/barnishd -a: 80 -a 127.0.0.1: 8443, proxy -f/etc/barniz/predeterminado.VCL -S MALLOC, 256M 
Establezca el puerto de escucha de barniz para enganche

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

# SystemCTL reiniciar barniz 

Paso 3: Obtener certificados SSL/TLS

4. En esta sección, explicaremos cómo crear el SSL/TLS paquete de certificado para ser utilizado Enganche. Para esta guía, explicaremos las diferentes opciones de cómo usar un certificado autofirmado, un certificado comercial o una de Vamos a cifrar.

Para crear un certificado autofirmado (que solo debe usar en un entorno de prueba local), puede usar el 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.Clave> Tecmint.pem 

Nota: Para el uso de la producción, puede comprar un certificado de un comercial Autoridad certificada (California) o tomar un certificado gratuito, automatizado y totalmente reconocido de Vamos a cifrar. Luego crea un paquete PEM.

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

# Ejemplo de gato.comunicarse.ejemplo clave.comunicarse.Ejemplo de CRT.com-hundir.CRT>/etc/SSL/Ejemplo.comunicarse.pem 

Para Vamos a cifrar, el certificado, la clave privada y la cadena completa se almacenarán en /etc/letsencrypt/live/ejemplo.com/, Así que crea el paquete como se muestra.

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

Paso 4: Configuración y enganche de inicio

5. A continuación, configurar Barniz Como backend para Enganche y especificar el SSL/TLS archivos de certificación para usar para Https, en el Enganche Archivo de configuración principal, ábralo para editar.

# vi/etc/enganche/enganche.confusión 

El Interfaz La sección define las direcciones IP y puerto Hitch escuchará. La configuración predeterminada es escuchar en todos IPv4 y IPv6 interfaces adjuntas en el servidor y se ejecuta en el puerto 443 y manejar entrante Https solicitudes, entregándolos a Barniz.

Cambiar el valor predeterminado backend puerto proxy desde 6086 a 8443 (El puerto utilizado para reenviar solicitudes a Barniz) en el Enganche archivo de configuración, utilizando el backend parámetro. Además, especifique el archivo de certificado utilizando el archivo parámetro como se muestra.

backend = "[127.0.0.1]: 8443 " #PEM-Dir ="/etc/pki/tls/private "pem-archivo ="/etc/ssl/tecmint.Lan/Tecmint.Pem " 
Configurar Hitch como proxy SSL/TLS para barniz

Guarde el archivo y cierre.

6. Ahora comienza el enganche servicio y habilitarlo para comenzar automáticamente en el arranque del sistema. Tenga en cuenta que el --ahora Cambie cuando se use con habilitar, inicia un servicio SystemD también y luego verifique el estado para ver si está en funcionamiento de la siguiente manera.

# SystemCTL Habilitar -Now Hitch # SystemCTL Status Hitch 
Verificar el estado del enganche

7. Antes de proceder a probar si su sitio web/aplicación ahora se está ejecutando en Https, necesitas permitir el Https Puerto de servicio 443 en el firewall para permitir que las solicitudes destinadas a ese puerto en el servidor pasen por el firewall.

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

Paso 5: Probar la terminación de SSL/TLS con la configuración de enganche de caché de barniz

8. Ahora es el momento de probar el Panón de caché de barniz configuración. Abra un navegador web y use la IP de su dominio o servidor para navegar Https.

https: // www.ejemplo.com o https: // server_ip/ 

Una vez que se haya cargado la página de índice de su aplicación web, consulte el Http encabezados para confirmar que el contenido se está sirviendo a través de Caché de barniz.

Para hacer eso, haga clic derecho en la página web cargada, seleccione Inspeccionar Desde la lista de opciones para abrir las herramientas del desarrollador. Luego haga clic en el Red pestaña, y Recargar 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 caché de barniz

Paso 6: redirigir HTTP a HTTPS en caché de barniz

9. Para ejecutar su sitio web en Https Solo que necesitas redirigir todo Http tráfico de Https. Puede hacerlo agregando la siguiente configuración en su archivo de configuración de enganche.

# vi/etc/enganche/enganche.confusión 

Primero, agregue la línea importar std; justo debajo VLC 4.0;, Entonces busca el vlc_recv Subrutina, que es la primera subrutina VCL ejecutada inmediatamente después Caché de barniz ha analizado la solicitud del cliente en su estructura de datos básica. Es donde podemos modificar los encabezados de solicitud y ejecutar un sintetizador para redirigir las solicitudes del cliente.

Modificarlo para que se vea así.

sub vcl_recv if (std.puerto (servidor.IP) != 443) establecer req.http.ubicación = "https: //" + req.http.anfitrión + REQ.url; return (sintetizador (301));  

Tenga en cuenta que el APODERADO Protocolo habilita Barniz para ver Enganche puerto de escucha 443 desde el servidor.IP variable. Entonces la línea std.puerto (servidor.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 por (ETS.puerto (servidor.IP) != 443)), la subrutina establecerá el encabezado de ubicación HTTP de solicitud (Establecer req.http.ubicación) a una solicitud segura ("https: //" + req.http.anfitrión + req.url) simplemente pidiéndole al navegador web que cargue un Https versión de la página web (yo.E Redirección de URL).

El Ubicación el encabezado se enviará al 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 lo siguiente VCL_SYNTH SUBROUTINE (Uno de sus muchos casos de usos es redirigir a los usuarios), para procesar el sintetizador anterior.

sub vcl_synth if (resp.estado == 301) establecer resp.http.Ubicación = REQ.http.ubicación; Establecer resp.estado = 301; regresar (entregar);  

Verifica si el estado de 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 de entrega crea 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 cierre.

11. Una vez más, aplique los nuevos cambios en la configuración del barniz reiniciando el servicio. Luego use la herramienta de línea de comandos curl para confirmar la redirección desde Http a Https.

# SystemCTL reiniciar barniz # curl -i http: // eaxmple.com/ 
Verifique la redirección HTTP a HTTPS

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

Verifique la redirección HTTP a HTTPS en el navegador

Esperamos que todo haya funcionado bien hasta este punto. Si no, deje caer 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 caché de Varnish y a la documentación del enganche.