es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , , ,

Answer

  1. Avatar for 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:

    frontend haproxy.nombre.dominio
        bind ipaddress:puerto ssl crt /home/cert.pem
        acl is_bdc path -i -m beg /ruta/a/app
        use_backend servidores_web if is_bdc
        default_backend servidores_web
        http-request set-header Host nombre_servidor_aplicación
    

    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.

Comments are closed.