Frage Konfigurieren Sie mehrere SSL-Zertifikate in Haproxy


Meine Haproxy-Instanz bedient 2 Domains (hauptsächlich um XSS auf der Hauptseite zu vermeiden).

Die Regeln sehen ungefähr so ​​aus

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

Jetzt verwendet SSL /etc/ssl/haproxy.pem als das Standard-Zertifikat, für das das Zertifikat ist example.com und nicht example.io.

Wie kann ich Zertifikate für mehrere Domainnamen angeben?


22
2017-12-12 17:37


Ursprung




Antworten:


Sie können alle Ihre Zertifikate in Dateien verketten sagen haproxy1.pem und haproxy2.pem oder Sie können ein Verzeichnis angeben, das alle Ihre PEM-Dateien enthält.

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

Gemäß der haproxy docs

Dann auf der Konfiguration verwenden Sie etwas wie folgt:

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

Lesen Sie mehr über SNI

Denken Sie daran, dass die SSL-Unterstützung für haproxy in der Entwicklungsbereitstellung ist und dass sie offensichtlich einen erheblichen Leistungseinbruch hat.

Es gibt andere Lösungen, die in diesem Thread besprochen werden: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

Hoffe das hilft.


55
2017-12-12 18:19



Ist die cert / key-Reihenfolge beim Verketten wichtig? - Erik Aigner
Ich denke nicht, dass es wichtig sein sollte. Wenn Sie beispielsweise ein Verzeichnis angeben, ist die Reihenfolge beliebig. Ich würde sicherstellen, dass, wenn Sie ein Zertifikat einschließen, Sie den passenden Schlüssel einschließen. - Rico
Ich habe es so eingerichtet, wie du es vorgeschlagen hast, aber haproxy benutzt nur das erste Zertifikat für jede Domain :( - Erik Aigner
Auch versucht crt-list mit dem gleichen Ergebnis - Erik Aigner
Aaaah ja! Das hat den Trick gemacht! - Erik Aigner


vielleicht könntest du das auch überprüfen:

/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

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


2
2018-03-19 10:32