Proxy local HTTP para HTTPS que pode fazer a conexão HTTPS por meio de um proxy

Proxy local HTTP para HTTPS que pode fazer a conexão HTTPS por meio de um proxy

Aqui está o acordo:

  • Nosso software cliente só pode se conectar usando o protocolo http, não pode fazer https.
  • No entanto, os requisitos de segurança determinam a segurança de ponta a ponta, por isso precisamos usar https ao conversar com o servidor.
  • Agora consegui fazer isso em um ambiente de teste usandotúnelcom a seguinte configuração:

arquivo stunnel.conf:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
connect = the.real.server:443
  • Dada a configuração do stunnel acima, posso configurar meu cliente de teste para usar o endereço do endpoint http://localhost:3000/endpoint/url/e tudo funciona bem.
  • Mas no ambiente de produção, o lado do cliente não tem acesso direto de rede ao.real.server. O tráfego HTTP/s do lado do cliente precisa passar por um servidor proxy.
  • Minhas perguntas:
    • É possível configurar o stunnel para conectar-se usando um servidor proxy?
    • Se não for possível usar o stunnel, existe outra maneira de fazer isso?

Responder1

Parece ser apoiado, mas opágina de manual, mas a linguagem é escrita de forma que você precisa mais ou menos conhecer os protocolos para entendê-la:

SobProtocolopodemos ver o seguinte:

connect Baseado em RFC 2817 - Atualizando para TLS dentro de HTTP/1.1, seção 5.2 - Solicitando um túnel com CONNECT Este protocolo é suportado apenas no modo cliente.

Mais abaixo encontramos o seguinte:

protocolHost = ADDRESS Endereço do host para as negociações do protocolo Para as negociações do protocolo 'connect', protocolHost especifica HOST:PORT do servidor TLS final ao qual o proxy será conectado. O servidor proxy conectado diretamente pelo stunnel deve ser especificado com a opção connect.

Assim, podemos juntar as peças:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
protocol = connect
connect = proxy.example.org:3128
protocolHost = the.real.server:443

Não testei, mas com base no texto da documentação, deve funcionar conforme desejado.

Responder2

Você pode fazer isso com:

[SSL Proxy]
accept = 8443
connect = 8084
cert = certificate.pem
key = private_key.pem

Você precisará de um certificado de uma autoridade de certificação para permitir conexões de cliente https.

informação relacionada