Configura più certificati SSL in Haproxy


28

La mia istanza haproxy serve 2 domini (principalmente per evitare XSS sul sito principale).

Le regole sono simili a questa

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

Ora SSL utilizza /etc/ssl/haproxy.pemcome certificato predefinito, che è il certificato per example.come non example.io.

Come posso specificare certificati per più nomi di dominio?

Risposte:


60

Puoi concatenare tutti i tuoi certificati in file dire haproxy1.peme haproxy2.pemoppure puoi specificare una directory contenente tutti i tuoi file pem.

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

Secondo i documenti haproxy

Quindi sulla configurazione utilizzare qualcosa del genere:

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

Maggiori informazioni su SNI

Tieni presente che il supporto SSL è in fase di sviluppo per haproxy e che a quanto pare ha un notevole successo in termini di prestazioni.

Esistono altre soluzioni di cui si parla in questo thread: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

Spero che sia di aiuto.


L'ordine cert / key è importante durante la concatenazione?
Erik Aigner,

Non penso che dovrebbe importare, ad esempio se si specifica una directory l'ordine è arbitrario. Vorrei assicurarmi che se includi un certificato, includi la chiave corrispondente.
Rico,

L'ho impostato come hai suggerito, ma haproxy continua a usare il primo certificato per ogni dominio :(
Erik Aigner,

Anche provato crt-listcon lo stesso risultato
Erik Aigner il

1
Aaaah si! Questo ha funzionato!
Erik Aigner,

9

Non è più necessario concatenare o specificare un elenco di certificati, basta specificare una cartella:

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

Nota: assicurarsi che la cartella non sia vuota e che siano presenti file PEM validi, altrimenti HAProxy non verrà eseguito.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.