HAProxy, aby zakończyć SSL, również wysłać SSL na serwer zaplecza

14

Chciałbym zakończyć protokół SSL w HAProxy, wykonać pewne operacje na nagłówku, przepisać adres URL i ponownie zaszyfrować ruch i wysłać do serwerów zaplecza jako SSL?

Nie mogę znaleźć sposobu, aby to zrobić. Mogę zrobić regularne zakończenie SSL i wysłać zwykłe żądania HTTP do backendu. Ale muszę wysłać SSL do backendu.

Chciałbym mieć następujące funkcje:

  • Wyodrębnij nagłówki przekierowane x, aby uzyskać rzeczywisty adres IP klienta za serwerem proxy.
  • Wdrożenie lepkości sesji za pomocą plików cookie.
  • Wykonaj przepisywanie adresów URL.
  • Wysyłaj ruch SSL do backendu, korzystając ze stickieness sesji opartej na plikach cookie.

O ile nie zakończę protokołu SSL na haproxy, nie mogę zrobić przepisywania adresów URL.

Jakakolwiek pomoc dobrych ludzi tutaj będzie bardzo mile widziana.

oazabir
źródło
1
Czy możesz opublikować swoją bieżącą konfigurację i powiedzieć nam, co nie działa?
GregL,

Odpowiedzi:

31

W haproxy.cfg nie ma nic specjalnego do roboty. Wystarczy skonfigurować dowolne przepisywanie adresów URL i manipulowanie nagłówkami w interfejsie HAProxy, a następnie przekierowywać ruch do zaplecza SSL. Oto szybki przykład:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none
Tubeless
źródło
1
Niesamowite! Pozwól mi spróbować. Nigdzie nie byłem w stanie znaleźć tego „serwera .... ssl”.
oazabir
Wielkie dzięki za Twoją pomoc. Udało mi się to uruchomić. Nie udało mi się jednak przykleić protokołu SSL do pracy. Czy możesz mi pomóc? Pytanie jest tutaj: serverfault.com/questions/738397/…
oazabir
Świetnie, cieszę się, że mogłem pomóc. Nie zapomnij zaakceptować mojej odpowiedzi, aby inni mogli od razu zobaczyć, że była pomocna ;-)
Tubeless
Czy szyfrowanie naprawdę działa, podając, że ssl nie weryfikuje żadnego? Z dokumentacji haproxy „Jeśli ustawiony na„ brak ”, certyfikat serwera nie jest weryfikowany. W innym przypadku certyfikat dostarczony przez serwer jest weryfikowany przy użyciu urzędów certyfikacji z„ pliku ca ”. Czy ktoś może to wyjaśnić?
mjm,
Przy ssl verify noneruchu między HAProxy a serwerem zaplecza jest nadal szyfrowany, ale ważność certyfikatu SSL zaplecza nie jest sprawdzana.
Tubeless