Mon instance haproxy dessert 2 domaines (principalement pour éviter 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
SSL utilise désormais /etc/ssl/haproxy.pem
comme certificat par défaut, qui est le certificat pour example.com
et pas example.io
.
Comment puis-je spécifier des certificats pour plusieurs noms de domaine?
Vous pouvez concaténer tous vos certificats dans des fichiers, par exemple 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
Selon les documents 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 } # 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
En savoir plus sur SNI
Gardez à l'esprit que le support SSL est en cours de développement pour haproxy et qu'il a apparemment des performances considérables.
Il existe d'autres solutions abordées dans ce fil: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites
J'espère que cela t'aides.
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 s'exécutera pas.
vous pourriez peut-être vérifier cela 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