Como cada día, acabas aprendiendo cosas nuevas que te acaban sirviendo para atacar un problema.
¿Cuál ha sido mi aventura y la solución?
Necesitaba montar un servicio S3 detrás de un Haproxy para el balanceo , necesitaba poder tener múltiples dominios (y sub-dominios) y estoy acostumbrado a trabajar con un formato similar a este:
frontend S3
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/certificate.pem
mode http
default_backend s3_nodes
¿Que problema tiene este tipo de configuración? Solo permite establecer un único certificado y por ejemplo los certificados wildcard solo permiten validar «*.dominio.es» pero no permiten tener múltiples wildcards. Para el caso que me planteaba , necesitaba tener múltiples dominios y subdominios debido a que tengo que dar servicio a múltiples dominios de clientes en modo marca blanca, donde el cliente puede traer su propio dominio/subdominio y sus certificados.
¿Cuál ha sido la solución?
A partir de la version 2.2 de Haproxy (en teoría puede funcionar en anteriores pero no ha sido mi caso), es posible parametrizar un directorio con certificados y el propio Haproxy se encargará de cargar el necesario para cada dominio según recibe las peticiones, pasando del anterior caso a algo tan sencillo como esto:
frontend S3
bind *:80
bind *:443 ssl crt /etc/haproxy/certs
mode http
default_backend s3_nodes
En /etc/haproxy/certs tendremos varios certificados, por ejemplo: frikiteam_es.pem para todo el dominio frikiteam.es y luego un segundo certificado para dominioejemplo_es.pem y así tantos como necesites
En este caso también me he encontrado otra solución , haproxy que tenía instalado, era la última versión disponible para Ubuntu 20.04 , en su versión 2.0.33 , la cuál lamentablemente aunque no mostrase error al configurar la versión, no funcionaba adecuadamente.
¿Cómo lo he solucionado? Muy sencillo, pasar de Ubuntu 20.04 a Ubuntu 22.04 a través del método standard de actualización (https://documentation.ubuntu.com/server/how-to/software/upgrade-your-release/) , inicialmente salvo configuraciones muy específicas, la versión de Ubuntu 22.04 (Haproxy 2.4) es completamente compatible con la original de Ubuntu 20.04.
Hay alternativas claro, como subir la versión de Haproxy con repositorios externos, pero ya que Ubuntu 20.04 ya no tiene soporte desde Mayo de este año (https://ubuntu.com/about/release-cycle) he preferido optar por actualizar y ponerlo al día en todos los sentidos (próximamente Ubuntu 24.04).
Espero que esto os pueda servir para vuestros proyectos frikis y hayáis aprendido algo nuevo como me ha pasado a mí hoy!
Más casos y documentación como siempre en : Docs Haproxy