É possível ter conexões HTTPS em servidores proxy? Se sim, que tipo de servidor proxy permite isso?
Duplicado com Como usar o proxy Socks 5 com Apache HTTP Client 4?
É possível ter conexões HTTPS em servidores proxy? Se sim, que tipo de servidor proxy permite isso?
Duplicado com Como usar o proxy Socks 5 com Apache HTTP Client 4?
Respostas:
TLS / SSL (O S em HTTPS) garante que não haja bisbilhoteiros entre você e o servidor que está contatando, ou seja, sem proxies. Normalmente, você usa
CONNECT
para abrir uma conexão TCP por meio do proxy. Nesse caso, o proxy não será capaz de armazenar em cache, ler ou modificar nenhuma solicitação / resposta e, portanto, será bastante inútil.Se quiser que o proxy possa ler as informações, você pode seguir a seguinte abordagem:
Um exemplo é o aumento de SSL do Squid . Da mesma forma, o arroto pode ser configurado para fazer isso. Isso também foi usado em um contexto menos benigno por um ISP egípcio .
Observe que os sites e navegadores modernos podem empregar HPKP ou pinos de certificado embutidos que contrariam essa abordagem.
fonte
Unconditionally trusted
refere-se a um certificado CA. Certos de CA não têm domínios. Eu alterei a resposta com dois exemplos em que isso funciona / funcionou na prática, sem nenhum alerta para o usuário.A resposta curta é: É possível e pode ser feito com um proxy HTTP especial ou um proxy SOCKS.
Em primeiro lugar, HTTPS usa SSL / TLS que, por design, garante segurança ponta a ponta, estabelecendo um canal de comunicação seguro em vez de um inseguro. Se o proxy HTTP é capaz de ver o conteúdo, então ele é um bisbilhoteiro man-in-the-middle e isso vai contra o objetivo do SSL / TLS. Portanto, deve haver alguns truques sendo jogados se quisermos proxy através de um proxy HTTP simples.
O truque é transformar um proxy HTTP em um proxy TCP com um comando especial chamado
CONNECT
. Nem todos os proxies HTTP oferecem suporte a esse recurso, mas muitos o fazem agora. O proxy TCP não pode ver o conteúdo HTTP sendo transferido em texto não criptografado, mas isso não afeta sua capacidade de encaminhar pacotes para frente e para trás. Dessa forma, o cliente e o servidor podem se comunicar com a ajuda do proxy. Esta é a maneira segura de fazer proxy de dados HTTPS.Também existe uma maneira insegura de fazer isso, em que o proxy HTTP se torna um intermediário. Ele recebe a conexão iniciada pelo cliente e, em seguida, inicia outra conexão com o servidor real. Em um SSL / TLS bem implementado, o cliente será notificado de que o proxy não é o servidor real. Portanto, o cliente precisa confiar no proxy, ignorando o aviso para que as coisas funcionem. Depois disso, o proxy simplesmente descriptografa os dados de uma conexão, criptografa novamente e os alimenta na outra.
Finalmente, podemos certamente fazer proxy HTTPS por meio de um proxy SOCKS , porque o proxy SOCKS funciona em um nível inferior. Você pode pensar em um proxy SOCKS como um proxy TCP e UDP.
fonte
tanto quanto me lembro, você precisa usar uma consulta HTTP CONNECT no proxy. isso converterá a conexão solicitada em um túnel TCP / IP transparente.
então você precisa saber se o servidor proxy que você usa suporta este protocolo.
fonte
Se ainda for de interesse, aqui está uma resposta a uma pergunta semelhante: Converter proxy HTTP em proxy HTTPS no Twisted
Para responder à segunda parte da pergunta:
Por padrão, a maioria dos servidores proxy será configurada para permitir conexões HTTPS apenas para a porta 443, portanto, URIs https com portas personalizadas não funcionarão. Isso geralmente é configurável, dependendo do servidor proxy. Squid e TinyProxy suportam isso, por exemplo.
fonte
Aqui está meu código Java completo que suporta solicitações HTTP e HTTPS usando o proxy SOCKS.
fonte
Você pode fazer isso usando técnicas man-in-the-middle com geração SSL dinâmica. Dê uma olhada no mitmproxy - é um proxy MITM baseado em Python e compatível com SSL.
fonte
tunelando HTTPS através de SSH (versão linux):
tudo o que você faz no localhost. então:
fonte
Eu tentei
ssh -N -D 12345 login@proxy_server
localhost:12345
mas isso resultava no erro "Conexão insegura" sempre que tentava me conectar a um site https.
A solução era
Referência da documentação digital do oceano
Como rotear o tráfego da Web com segurança sem VPN usando um túnel SOCKS
fonte
Não acho que "ter conexões HTTPS em servidores proxy" significa o tipo de ataque Man-in-the-Middle de servidor proxy. Acho que está perguntando se é possível conectar a um servidor proxy http por TLS. E a resposta é sim.
Sim, veja minha pergunta e resposta aqui. O servidor proxy HTTPs só funciona em SwitchOmega
O tipo de servidor proxy implanta certificados SSL, como fazem os sites comuns. Mas você precisa de um
pac
arquivo para o navegador configurar a conexão proxy sobre SSL.fonte