Fornecendo acesso HTTP via proxy reverso a um site HTTPS interno

2

Estou tentando configurar um proxy reverso HTTP para um servidor HTTPS interno. Como sidenote, sim, eu sei que estou jogando toda a segurança fora. O servidor HTTPS original não é de natureza sensível para nós, e o produto que o executa não permite desativar o HTTPS ou reconfigurar o servidor da Web incorporado de nenhuma maneira.

Eu já experimentei o Nginx, mas a maioria das pessoas parece estar usando o Apache, e é isso que estou tentando agora.

Esta é a minha configuração atual de host virtual:

<VirtualHost 0.0.0.0:10443>
    ServerName server.domain.com

    SSLProxyEngine on
    #UnknownSSLDirectives
    #SSLProxyMachineCertificateFile /etc/apache2/selfsignedcert.pem
    SSLProxyCACertificateFile /etc/apache2/selfsignedcert.pem

    ProxyRequests Off
    ProxyPass / https://internalserver.internaldomain.com:2941/
    ProxyPassReverse / https://internalserver.internaldomain.com:2941/

    <Proxy>
        Order Deny,Allow
        Allow from all
    </Proxy>

    RequestHeader unset Authorization

    ErrorLog /var/log/apache2/internalserver-error.log
    CustomLog /var/log/apache2/internalserver-access.log common

</VirtualHost>

Quando tento abrir o link , recebo o erro "401 Unauthorized".

Em outras questões do ServerFault, vi referências a UnknownSSLDirectives, mas o Apache reclama que a opção não existe. E ao usar SSLProxyMachineCertificateFile em vez de SSLProxyCACertificateFile, mas o Apache reclama que a configuração SSL está incompleta nesse caso.

Estou bastante preso. Como posso depurar isso ou fazer algum progresso? Obrigada!

    
por UrkoM 21.02.2013 / 08:00

2 respostas

0

Eu não tenho uma resposta, mas aqui estão algumas sugestões para depurar o problema.

Eu tentaria usar o "encerramento reverso do SSL" usando stunnel no modo cliente ( link ), e tente se eu posso conectar a http diretamente via stunnel em uma porta alta (via curl / lynx / tunelamento da porta alta via ssh). No momento, eu lido apenas com o cliente ssl e não com as configurações de proxy do Apache.

Quando consegui que isso funcionasse, tentava configurar um proxy HTTP simples e não criptografado no Apache para a porta stunnel. Eu tenho a parte de descriptografia funcionando, e o proxy http não criptografado no Apache é uma configuração conhecida e bem documentada. Além disso, posso usar um sniffer (como o tcpdump) para escutar a comunicação entre o Apache e o soquete stunnel não criptografado.

Somente depois que isso estiver funcionando, tentarei descobrir como remover o intermediário stunnel e fazer o próprio Apache falar https.

Nota: Eu esperaria alguns problemas com a autenticação se o serviço de back-end definisse o sinalizador seguro nos cookies, e o navegador acreditasse que fosse em http descriptografado. Alguns outros cabeçalhos e redirecionamentos também podem criar problemas. Em qualquer caso, depure o serviço com curl -v antes de usar o navegador e use um inspetor da Web (como o Firebug) para inspecionar cabeçalhos e cookies de solicitação / resposta.

    
por 22.02.2013 / 15:38
0

A partir de 2018, não recomende o Apache ou stunnel para essa tarefa. Eu recomendo o haproxy por sua clareza e rapidez.

Quanto ao Apache 2.2, você cometeu um erro com <Proxy> . Em um cenário de proxy reverso, o acesso a ProxyPass é controlado com <Location> block, não com <Proxy> .

O <Proxy> se aplica somente aos proxies encaminhar e você faz um proxy reverso . Está no manual .

    
por 14.04.2018 / 11:40