Proxy Squid por trás do Haproxy

1

Na minha configuração, eu uso o Haproxy principalmente para proxy reverso.

Eu instalei o Squid Proxy na minha lan privada e posso acessá-lo externamente com a porta 3128. Mas eu uso a autenticação básica ncsa e os cabeçalhos não são criptografados, então meu login é vulnerável. Eu quero encaminhar meu proxy por haproxy.

[Cliente] - > proxy.exemplo.net- > [haproxy: 443 ssl] - > [lula: 3128]

Eu adicionei na minha configuração haproxy um novo back-end:

frontend www-https
    bind *:443 ssl crt /etc/haproxy/ssl/fullchain.pem no-sslv3
    log global
    mode http
    use_backend proxy-squid if { ssl_fc_sni proxy.example.com }
    use_backend default if { ssl_fc_sni example.com }
    default_backend default

backend default
    option forwardfor
    server d8-apps 127.0.0.1:8000 #nginx

backend proxy-squid
    mode http
    option forwardfor
    option http-server-close
    server d8-apps 127.0.0.1:3128

Meu backend padrão e outros funcionam bem, mas não o proxy-squid. Eu percebi um "tcpdump -nX -vv -i lo porta 3128" durante o meu pedido e nada .. e com a porta 443, vejo muitos pacotes com checksum incorreto.

No Wireshark, eu não vejo o handshake ssl como quando eu acesso example.com (backend padrão). Acabei de ver o handshake de 3 vias tcp seguido por FIN, ACK.

Acho que a Haproxy não entende minha solicitação real quando eu configuro o proxy na configuração do meu navegador. Então, é possível perceber isso com uma configuração específica?

Obrigado!

    
por Body 15.06.2016 / 21:27

1 resposta

0

O HTTP contém várias sintaxes de mensagens diferentes que são usadas em diferentes situações. As mensagens enviadas para um servidor (ou proxy reverso) são bem diferentes daquelas enviadas para um proxy.

Como você tem a configuração haproxy para operar como um proxy reverso, ele não permite as mensagens que o navegador precisa para configurar um túnel HTTPS.

Como tudo o que você está realmente tentando fazer é proteger suas conexões com o Squid, sugiro que você simplesmente o ouça em uma https_port para conexões do navegador. Isso precisará de uma configuração de certificado TLS com o nome de host público de proxies, é claro. Observe que isso não é o mesmo detalhe de certificado usado para um proxy reverso (que usa o nome de domínio do servidor de origem).

O Firefox e o Chrome aparentemente oferecem suporte a TLS para um proxy explícito quando configurado para usá-lo por meio de um arquivo PAC ou da variável de ambiente https_proxy =. Em ambos os casos, o URI do proxy deve usar https: // scheme, onde tradicionalmente seria colocado http: // scheme.

(Eu digo aparentemente porque eu não tentei ainda. Outros tiveram resultados mistos, mas o pessoal do navegador continua dizendo que é possível).

    
por 28.09.2016 / 06:12

Tags