53 votes

Configurer plusieurs certificats SSL dans Haproxy

Mon instance haproxy sert 2 domaines (principalement pour éviter les attaques XSS sur le site principal).

Les règles ressemblent à ceci

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

Maintenant SSL utilise /etc/ssl/haproxy.pem comme certificat par défaut, qui est le certificat de example.com et non de example.io.

Comment puis-je spécifier des certificats pour plusieurs noms de domaine?

87voto

Rico Points 2195

Vous pouvez concaténer tous vos certificats dans des fichiers nommés haproxy1.pem et haproxy2.pem ou vous pouvez spécifier un répertoire contenant tous vos fichiers pem.

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

Comme mentionné dans la documentation de haproxy

Ensuite, dans la configuration utilisez quelque chose comme ceci :

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 } # basculement de contenu basé sur SNI
  use_backend bk_cert2 if { ssl_fc_sni my.example.org } # basculement de contenu basé sur SNI

backend bk_cert1
  mode http
  server srv1 :80

backend bk_cert2
  mode http
  server srv2 :80

En savoir plus sur SNI

Gardez à l'esprit que le support SSL est en cours de développement pour haproxy et qu'il semble également avoir un impact de performance considérable.

D'autres solutions sont discutées dans ce fil : https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

J'espère que cela vous aidera.

32voto

Tim Points 370

Plus besoin de concaténer ou de spécifier une liste de certificats, il suffit de spécifier un dossier :

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

Remarque : assurez-vous que le dossier n'est pas vide et que des fichiers PEM valides sont présents, sinon HAProxy ne démarrera pas.

14voto

zx1986 Points 191

Peut-être pourriez-vous vérifier ceci aussi :

/etc/ssl/private/crt-list.txt :

/etc/ssl/private/mydomain.pem
/etc/ssl/private/myotherdomain.pem

haproxy.cfg :

frontend https-in:
  bind *:443 ssl crt-list /etc/ssl/private/crt-list.txt

refs : https://github.com/msimerson/Mail-Toaster-6/wiki/How-to-for-Multiple-Domain-SSL-Certificates-with-HaProxy

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X