Configurar múltiples certificados SSL en Haproxy


28

Mi instancia de haproxy sirve 2 dominios (principalmente para evitar XSS en el sitio principal).

Las reglas se parecen a esto

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api

Ahora SSL utiliza /etc/ssl/haproxy.pemcomo el certificado predeterminado, que es el certificado para example.comy no example.io.

¿Cómo puedo especificar certificados para múltiples nombres de dominio?

Respuestas:


60

Puede concatenar todos sus certificados en archivos dicen haproxy1.pemy haproxy2.pemo puede especificar un directorio que contiene todos los archivos PEM.

cat cert1.pem key1.pem > haproxy1.pem 
cat cert2.pem key2.pem > haproxy2.pem

Según los documentos de haproxy

Luego, en la configuración, use algo como esto:

defaults
  log 127.0.0.1 local0
  option tcplog

frontend ft_test
  mode http
  bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem 
  use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI
  use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI

backend bk_cert1
  mode http
  server srv1 <ip-address2>:80

backend bk_cert2
  mode http
  server srv2 <ip-address3>:80

Leer más sobre SNI

Tenga en cuenta que el soporte SSL está en fase de desarrollo para haproxy y también que aparentemente tiene un impacto considerable en el rendimiento.

Hay otras soluciones mencionadas en este hilo: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

Espero que esto ayude.


¿Es importante el orden de certificado / clave al concatenar?
— Erik Aigner

No creo que deba importar, por ejemplo, si especifica un directorio, el orden es arbitrario. Me aseguraría de que si incluye un certificado, incluya la clave correspondiente.
— Rico

Lo configuré de la manera que sugirió, pero haproxy sigue usando el primer certificado para cada dominio :(
— Erik Aigner

También probé crt-listcon el mismo resultado
— Erik Aigner,

1
Aaaah si! Eso hizo el truco!
— Erik Aigner

9

Ya no es necesario concat o especificar una lista de certificados, solo especifique una carpeta:

frontend public
    bind *:443 ssl crt /etc/haproxy/ssl/

Nota: asegúrese de que la carpeta no esté vacía y que haya archivos PEM válidos; de lo contrario, HAProxy no se ejecutará.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.