2013-02-24 13 views
15

Dopo aver cercato su Google, ho finalmente fatto funzionare la mia haproxy ssl. Ma ora ho un problema perché il root e il certificato intermedio non sono installati quindi il mio ssl non ha la barra verde.Configurazione Haproxy ssl - installa il certificato root e intermedio

mio config haproxy

global 
     maxconn  4096 
     nbproc  1 
     #debug 
     daemon 
     log   127.0.0.1 local0 

    defaults 
     mode  http 
     option  httplog 
     log   global 
    timeout connect 5000ms 
    timeout client 50000ms 
    timeout server 50000ms 

    frontend unsecured 
     bind 192.168.0.1:80 
     timeout  client 86400000 
     reqadd X-Forwarded-Proto:\ http 
     default_backend  www_backend 

    frontend secured 
    mode http 
    bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem 
    reqadd X-Forwarded-Proto:\ https 
    default_backend www_backend 

    backend www_backend 
     mode  http 
     balance  roundrobin 
     #cookie  SERVERID insert indirect nocache 
     #option  forwardfor 
     server  server1 192.168.0.2:80 weight 1 maxconn 1024 check 
     server  server2 192.168.0.2:80 weight 1 maxconn 1024 check 

192.168.0.1 è il mio bilanciamento del carico IP. /etc/haproxy/cert.pem contiene chiave privata e certificato di dominio es. www.domain.com

C'è another question with ssl configuration, che include bundle.crt. Quando ho contattato il mio supporto ssl, mi hanno detto che devo installare il certificato root e intermedio.

Da Comodo Documentation, creare un pacchetto è semplice come unire il loro crt, che ho creato.

Ma quando provo a riconfigurare il mio config haproxy come

bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file /path/to/bundle.crt 

Im errore ottenere che i cant uso che il parametro di configurazione su bind.

p.s im utilizzando la versione 1.5 dev12. Con la versione più recente dev17 ho avuto problemi anche a partire haproxy as on this post

enter image description here

+0

Si dovrebbe [disable SSLv3] (http://blog.haproxy.com/2014/10/15/haproxy-and-sslv3-poodle-vulnerability/) con 'bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file/percorso/a/bundle.crt no-sslv3' –

risposta

35

Sembra che sarà necessario ricompilare in questo modo:

make clean 
make \ 
    TARGET="linux26" \ 
    USE_STATIC_PCRE=1 \ 
    USE_OPENSSL=1 
make install PREFIX="/opt/haproxy" 

Dopo di che, bind dovrebbe riconoscere la vostra opzione crt. Nel mio caso, ho usato:

bind 0.0.0.0:443 ssl crt /envs/production/ssl/haproxy.pem 

I concatenati tutti i file SSL in 1 grosso file nella catena del certificato di titolo, la chiave privata. es .:

-----BEGIN MY CERTIFICATE----- 
-----END MY CERTIFICATE----- 
-----BEGIN INTERMEDIATE CERTIFICATE----- 
-----END INTERMEDIATE CERTIFICATE----- 
-----BEGIN INTERMEDIATE CERTIFICATE----- 
-----END INTERMEDIATE CERTIFICATE----- 
-----BEGIN ROOT CERTIFICATE----- 
-----END ROOT CERTIFICATE----- 
-----BEGIN RSA PRIVATE KEY----- 
-----END RSA PRIVATE KEY----- 

riavvio, e test con openssl s_client -connect 127.0.0.1:443 -servername www.transloadit.com |head.

Dovrebbe restituire le informazioni corrette sul certificato.

Modifica: ho appena trovato questo tutorial via HackerNews: https://serversforhackers.com/c/using-ssl-certificates-with-haproxy. Ho pensato che sarebbe stato utile aggiungere come va più in dettaglio.

+0

mal provato, ma puoi dirmi il mio ordine di certs, https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1209 –

+2

Aggiornato la risposta per mostrare l'ordine esatto di certificati. – kvz

+0

Non è necessario inviare il certificato di origine come il client lo ha nel proprio archivio di fiducia o non sarà considerato attendibile. –

0

Mi dispiace non sono sicuro quale versione di haproxy è l'opzione USE_OPENSSL disponibile ... non posso trovare questa opzione nel mio codice di base è V 1.4.24

Valid USE_* options are the following. Most of them are automatically set by 
# the TARGET, others have to be explictly specified : 
# USE_CTTPROXY   : enable CTTPROXY on Linux (needs kernel patch). 
# USE_DLMALLOC   : enable use of dlmalloc (see DLMALLOC_SRC) patch). 
# USE_EPOLL   : enable epoll() on Linux 2.6. Automatic. patch). 
# USE_GETSOCKNAME  : enable getsockname() on Linux 2.2. Automatic. patch). 
# USE_KQUEUE   : enable kqueue() on BSD. Automatic. patch). 
# USE_MY_EPOLL   : redefine epoll_* syscalls. Automatic. patch). 
# USE_NETFILTER  : enable netfilter on Linux. Automatic.patch). 
# USE_PCRE    : enable use of libpcre for regex. Recommended.patch). 
# USE_POLL    : enable poll(). Automatic.patch). 
# USE_REGPARM   : enable regparm optimization. Recommended on x86.patch). 
# USE_SEPOLL   : enable speculative epoll(). Automatic.patch). 
# USE_STATIC_PCRE  : enable static libpcre. Recommended.patch). 
# USE_TPROXY   : enable transparent proxy. Automatic. patch). 
# USE_LINUX_TPROXY  : enable full transparent proxy. Automatic. patch). 
# USE_LINUX_SPLICE  : enable kernel 2.6 splicing. Automatic. patch). 
# USE_LIBCRYPT   : enable crypted passwords using -lcrypt patch). 
# USE_CRYPT_H   : set it if your system requires including crypt.h 
+1

prova versione 1.5+ non 1.4+. Tuttavia 1.5 è ancora in versione "dev", ma funziona perfettamente per me in produzione –

+0

A partire dal 19 giugno 2014, viene rilasciata la versione stabile di HAProxy 1.5 – kvz