HTTP CONNECT: como um proxy HTTP lida com HTTPS
Acompanhe uma requisição HTTPS por um proxy HTTP, separe a resposta CONNECT da resposta do servidor de origem e identifique onde o túnel falha.
“200 Connection Established” significa que o proxy aceitou um túnel. O site ainda não retornou nenhuma página. Em seguida vem o TLS com o destino, seguido da requisição HTTPS em si.
Da conexão com o proxy à resposta do site
- O cliente se conecta ao endpoint do proxy.
- Ele pede ao proxy que se conecte a um host e uma porta de destino.
- O proxy aceita ou rejeita essa solicitação.
- Após a aceitação, o cliente negocia o TLS com o destino pelo túnel.
- O cliente envia a requisição HTTPS e recebe a resposta do site dentro do TLS.
Uma conexão recusada pelo proxy, um túnel rejeitado e um erro de certificado ocorrem em pontos diferentes dessa sequência. Identifique a última etapa concluída antes de mudar as configurações.
A troca CONNECT
Em HTTP/1.1, uma troca simplificada é assim:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
O alvo da requisição é um host e uma porta, sem o caminho nem os parâmetros de consulta do site. Após uma resposta CONNECT bem-sucedida, a conexão transporta os bytes do túnel. Para um destino HTTPS, a próxima troca do cliente é o handshake TLS.
Leia o código numérico em vez de procurar uma correspondência com a frase explicativa em inglês. Proxies podem usar textos diferentes para o mesmo status.
Acompanhe com curl
Para um proxy HTTP na porta local 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Substitua o endereço de escuta pelo seu endpoint; se precisar de candidatos, consulte a lista de proxies HTTP e teste a entrada escolhida. A lista de exceções vazia garante que esta chamada selecione o proxy. Procure, em ordem cronológica, a conexão com o proxy, a resposta CONNECT, a verificação do certificado do destino e a resposta do site. O texto exato do log depende da compilação do curl.
O destino pode retornar 404, 429 ou 500 depois que o proxy aceitar o túnel. Também pode falhar durante o TLS antes de retornar qualquer resposta HTTP.
Onde parou?
| Observação | O que investigar em seguida |
|---|---|
| A conexão com o proxy é recusada | Endereço do proxy, porta de escuta, processo e acesso à rede. |
| O proxy retorna 407 | A conta do proxy e o esquema de autenticação. |
| O proxy rejeita um destino ou uma porta | Política de acesso e destinos CONNECT permitidos. |
| O túnel abre, mas a verificação TLS falha em seguida | Nome do destino, repositório de confiança, relógio e qualquer interceptação TLS gerenciada. |
| O TLS tem sucesso e o site retorna um erro | A resposta do site. |
Para comparar, mantenha um lado fixo: tente outro destino pelo mesmo proxy ou compare o mesmo destino por uma rota direta permitida.
O túnel continua tendo um operador
O proxy conhece o destino CONNECT e lida com os tempos e o volume do tráfego. O TLS de ponta a ponta comum protege o conteúdo da aplicação do site contra um proxy que não termina aquela sessão TLS. Um proxy de interceptação gerenciado em que o cliente confia envolve uma relação de confiança diferente.