Proxy HTTP ou HTTPS: o que essa classificação significa
Entenda a diferença entre um proxy HTTP que cria túneis para sites HTTPS e um proxy HTTPS que criptografa a conexão com o próprio proxy.
Use o esquema indicado na documentação do listener do proxy. Ao escolher candidatos na lista de proxies HTTP, confirme esse esquema antes de configurar o cliente. Um site HTTPS pode usar http://proxy.example:8080; trocar esse valor por https:// solicita outro tipo de conexão com o proxy.
| URL do proxy | URL do site | Conexão |
|---|---|---|
http://proxy.example:8080 | http://example.com/ | HTTP sem criptografia até o proxy e até o destino. |
http://proxy.example:8080 | https://example.com/ | HTTP CONNECT até o proxy e, depois, TLS com o destino pelo túnel. |
https://proxy.example:8443 | https://example.com/ | TLS até o proxy, com o túnel para o destino transportado dentro dessa conexão. |
Para um listener HTTP comum que permite CONNECT, esta configuração é coerente:
curl --proxy http://127.0.0.1:8080 https://example.com/O handshake TLS do site acontece depois que o proxy aceita o túnel. Se você mudar a URL do proxy para https://, mas o listener só entender HTTP sem criptografia, a negociação TLS com o proxy poderá falhar antes de entrar em contato com o site.
O que o TLS até o proxy acrescenta
Um proxy com TLS protege o trecho entre o cliente e o proxy, incluindo a troca CONNECT e a autenticação no proxy, contra observadores passivos nesse caminho. O operador do proxy continua processando a conexão e sabe qual é o destino do túnel. Tanto o cliente quanto o listener precisam oferecer suporte a esse modo:
curl --proxy https://proxy.example:8443 https://example.com/Use o nome de host real do serviço; o certificado precisa corresponder a ele e ser confiável. As restrições de destino e porta continuam valendo.
Com HTTPS dos dois lados, há duas verificações de certificado. O curl permite configurá-las separadamente:
curl --proxy https://proxy.example:8443 --proxy-cacert proxy-ca.pem --cacert origin-ca.pem https://example.com/--proxy-cacert define a confiança para o proxy; --cacert define a confiança para o destino. Quando necessário, use os conjuntos de certificados fornecidos pelo administrador; a configuração de confiança do sistema talvez já seja suficiente. Antes de alterar qualquer uma delas, identifique qual handshake falhou.
A classificação “HTTPS” em uma lista de proxies pode significar apenas que o endpoint passou em um teste CONNECT. Se a lista não explicar o teste, essa classificação, sozinha, não informa se o listener espera http:// ou https://.