Skonfiguruj wiele certyfikatów SSL w Haproxy


28

Moja instancja haproxy obsługuje 2 domeny (głównie w celu uniknięcia XSS na głównej stronie).

Zasady wyglądają mniej więcej tak

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

Teraz SSL używa /etc/ssl/haproxy.pemjako domyślnego certyfikatu, który jest certyfikatem, example.coma nie certyfikatem example.io.

Jak mogę określić certyfikaty dla wielu nazw domen?

Odpowiedzi:


60

Możesz połączyć wszystkie swoje certyfikaty w pliki, powiedz haproxy1.pemi haproxy2.pemlub możesz określić katalog zawierający wszystkie pliki pem.

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

Zgodnie z dokumentami haproxy

Następnie w konfiguracji użyj czegoś takiego:

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

Przeczytaj więcej o SNI

Należy pamiętać, że obsługa protokołu SSL jest w fazie projektowania dla haproxy, a także, że najwyraźniej ma znaczny spadek wydajności.

W tym wątku omówiono inne rozwiązania: /programming/10684484/haproxy-with-multiple-https-sites

Mam nadzieję że to pomoże.


Czy kolejność certyfikatu / klucza jest ważna podczas konkatenacji?
— Erik Aigner,

Nie sądzę, że powinno to mieć znaczenie, na przykład jeśli podasz katalog, kolejność jest dowolna. Upewniam się, że jeśli podasz certyfikat, to dołącz odpowiedni klucz.
— Rico,

I ustawić go tak, jak sugerowane, ale haproxy tylko trzyma przy użyciu pierwszego cert dla każdej domeny :(
— Erik Aigner

Próbowałem także crt-listz tym samym rezultatem
— Erik Aigner,

1
O tak! To załatwiło sprawę!
— Erik Aigner,

9

Nie musisz już konkatować ani określać listy certyfikatów, po prostu określ folder:

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

Uwaga: upewnij się, że folder nie jest pusty i że obecne są prawidłowe pliki PEM, w przeciwnym razie HAProxy nie uruchomi się.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.