Re-criptografia de SSLproxy ssl e modificação do cabeçalho http

2

Eu quero usar meu Haproxy 1.6.5 como balanceador de carga Https antes de meus servidores https, mas fiquei com um problema de incompreensão.

Eu quero esse comportamento: o haproxy está disponível como link , mas por trás dele há vários servidores https com certificados auto-assinados que não posso alternar para http.

Então eu configurei meu frontend tcp para isso como

frontend tcp_in
       mode tcp
       option tcplog
       bind *:443 ssl crt /etc/ssl/certs/server.bundle.pem
       maxconn 50000

   tcp-request inspect-delay 5s
   tcp-request content accept if { req.ssl_hello_type 1 }

   acl example_acl req.ssl_sni -i example.com
   use_backend special_example if example_acl

Depois disso, quero enviar meu tráfego para um dos back-ends, mas o ponto é que desejo solicitar algo como https: \ eimA.customer.local de backend1 e https: \ eimB.customer.local de backend2 Meu palpite é que preciso reescrever o cabeçalho do host na solicitação. (Provavelmente não funcionará no modo tcp. Então, como posso modificar a configuração para fazer isso?)

Minha configuração de back-end é:

backend special_eims
        mode tcp
        option tcplog
        balance roundrobin
        stick-table type binary len 32 size 30k expire 30m
        acl clienthello req_ssl_hello_type 1
        acl serverhello rep_ssl_hello_type 2
        tcp-request inspect-delay 5s
        tcp-request content accept if clienthello
        tcp-response content accept if serverhello


        server eim1 eimA.customer.local:443 check
        server eim2 eimA.customer.local:443 check


        stick on payload_lv(43,1) if clienthello
        stick store-response payload_lv(43,1) if serverhello

Como resultado da minha configuração, recebo erro de conexão ssl no navegador e

curl -v https://example.com/default -k
* About to connect() to example.com port 443 (#0)
*   Trying 127.0.0.1... connected
* Connected to example.com (127.0.0.1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* NSS error -12263
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error

A conexão direta ao servidor backend com o link retorna o erro 404, de modo que somente o formato link é permitido.

Por favor me ajude, desculpe se a pergunta é burra.

    
por Oleg Doroshenko 14.06.2016 / 16:25

1 resposta

1

Eu resolvi isso depois de algum tempo. 1. Eu mudei do tcp para o modo http, porque no modo tcp você não pode obter informações do cabeçalho http. 2. Usou nomes de domínio real nas instruções do servidor e usou http-send-name-header Host , que basicamente define o cabeçalho do host para o nome após a diretiva server 3. Para o modo de re-encriptação, o certificado front-end é obrigatório.

    frontend CUIC_frontend
           mode http
           bind *:443 ssl crt  /etc/ssl/certs/ssl-cert.pem
           option forwardfor
           option http-server-close
           reqadd X-Forwarded-Proto:\ https
    default_backend App_Backend
....
backend App_Backend
        mode http
        balance roundrobin
        http-send-name-header Host
        server full-application1-domain-name  10.10.10.1:443 cookie app1 check ssl verify none 
        server full-application2-domain-name 10.10.10.2:443 cookie app2 check ssl verify none 
    
por 04.08.2016 / 15:11