Cómo hacer que una aplicación HTTP se convierta en HTTPS con HAProxy y terminación SSL
Donde trabajo, hay una aplicación web alojada en servidores Windows, todos los usuarios acceden a la aplicación utilizando HTTP, no HTTPS. Esto se debe a algunas restricciones que el equipo de desarrollo no pudo resolver.
Así que pensé que podría solucionar este problema utilizando HAProxy y la terminación SSL, para que los usuarios se comuniquen primero con el proxy utilizando HTTPS y luego el proxy se comunique con los servidores de la aplicación utilizando HTTP. Esto estaría dentro de una VLAN privada para que el tráfico HTTP no pueda ser espiado.
Los usuarios acceden a la aplicación utilizando este esquema –> http://servername:port/path/to/app
Entonces, en lugar de esto, los usuarios deberían escribir https://haproxy.domainname:port/path/to/app
y el haproxy debería manejar la comunicación con los servidores de la aplicación.
¿Es esto posible? ¿O debería pensar en otra solución para esto?
Se me ocurrió esto:
frontend haproxy.domain.name
bind ipaddress:port ssl crt /home/cert.pem
acl is_bdc path -i -m beg /path/to/app
use_backend web_servers if is_bdc
default_backend web_servers
backend web_servers
balance roundrobin
server server1 ipaddress:port
Puedo acceder al servidor de la aplicación utilizando esta configuración, pero la aplicación completa algunas variables utilizando la URL del navegador web, y como estoy accediendo a la aplicación utilizando otra URL (haproxy.domain.name en lugar del nombre de host del servidor de la aplicación), esto está causando algunos errores. ¿Es posible mantener el nombre de host del servidor de la aplicación en la URL pero también mantener la terminación SSL? El certificado utilizado es un comodín, por lo que agregar el nombre de dominio sería suficiente (creo).
¡Gracias de antemano!
davy.ai
Sí, es posible mantener el nombre del servidor de la aplicación en la URL mientras se utiliza la terminación SSL con HAProxy. Puede lograr esto agregando la regla “http-request set-header” en la configuración de HAProxy, de la siguiente manera:
La regla “http-request set-header Host” establecerá el encabezado del host en el nombre del servidor de la aplicación, lo que permitirá que la aplicación complete correctamente las variables utilizando la URL del navegador web. Además, dado que tiene un certificado comodín, agregar el nombre de dominio debería ser suficiente para que la terminación SSL funcione correctamente.
En general, utilizar HAProxy con terminación SSL es una buena solución para habilitar la comunicación HTTPS para su aplicación web mientras mantiene los servidores de la aplicación en HTTP. Solo asegúrese de configurar correctamente los ajustes para evitar cualquier problema con la funcionalidad de la aplicación.