2013-02-24 21 views
15

Po dużo googlowania, w końcu sprawiłem, że mój haproxy ssl działa. Ale teraz mam problem, ponieważ certyfikat główny i pośredni nie jest zainstalowany, więc mój ssl nie ma zielonego paska.Konfiguracja Haproxy ssl - zainstaluj root i certyfikat pośredni

Moja haproxy config

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 jest moje ip równoważenia obciążenia. /etc/haproxy/cert.pem zawiera klucz prywatny i certyfikat domeny np. www.domain.com

Istnieje another question with ssl configuration, który obejmuje bundle.crt. Kiedy skontaktowałem się z moją obsługą ssl, powiedzieli mi, że muszę zainstalować certyfikat główny i pośredni.

Od Comodo Documentation, tworzenie pakietu jest proste, jak połączenie ich crt, które zrobiłem.

Ale gdy próbuję reconfig mój HAProxy config jak

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

Im uzyskiwanie błędu, że nie mogę wykorzystać ten parametr konfiguracyjny na związać.

p.s im przy użyciu wersji 1.5 dev12. Dzięki najnowszej wersji dev17 miałem problemy nawet zaczynając haproxy as on this post

enter image description here

+0

Powinieneś [Wyłącz SSLv3] (http://blog.haproxy.com/2014/10/15/haproxy-and-sslv3-poodle-vulnerability/) z 'bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file/path/to/bundle.crt no-sslv3' –

Odpowiedz

35

Wygląda na to trzeba przebudować tak:

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

Po tym, bind powinien rozpoznać opcję CRT. W moim przypadku użyłem:

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

ja złączyć wszystkie pliki ssl do 1 dużego pliku w łańcuchu certyfikatów zamówienia, klucza prywatnego. np .:

-----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----- 

Uruchom ponownie i przetestuj z openssl s_client -connect 127.0.0.1:443 -servername www.transloadit.com |head.

Powinien zwrócić prawidłowe informacje o certyfikacie.

Edytuj: Właśnie znalazłem ten samouczek za pośrednictwem HackerNews: https://serversforhackers.com/c/using-ssl-certificates-with-haproxy. Pomyśleliśmy, że byłoby użyteczne, aby dodać je bardziej szczegółowo.

+0

źle próbuję, ale czy możesz powiedzieć mi o moim zamówieniu, https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1209 –

+2

Zaktualizowano odpowiedź, aby pokazać dokładną kolejność certyfikaty. – kvz

+0

Nie trzeba wysyłać certyfikatu głównego, ponieważ klient ma go w swoim magazynie zaufanych certyfikatów lub nie będzie on zaufany. –

0

Niestety nie jestem pewien, która wersja HAProxy jest dostępna opcja USE_OPENSSL ... Nie mogę znaleźć tej opcji w moim kodzie jest 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

wypróbuj wersję 1.5+ nie 1.4+. Jednak 1.5 jest nadal wersją "dev", ale jej praca jest dla mnie dobra w produkcji –

+0

Od 19 czerwca 2014 roku opublikowano stabilną wersję HAProxy 1.5 – kvz