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 proxyURL do siteConexão
http://proxy.example:8080http://example.com/HTTP sem criptografia até o proxy e até o destino.
http://proxy.example:8080https://example.com/HTTP CONNECT até o proxy e, depois, TLS com o destino pelo túnel.
https://proxy.example:8443https://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://.

Artigos relacionados