Proxy local HTTP a HTTPS que puede realizar la conexión HTTPS a través de un proxy

Proxy local HTTP a HTTPS que puede realizar la conexión HTTPS a través de un proxy

Aquí está el trato:

  • Nuestro software cliente solo puede conectarse mediante el protocolo http, no puede hacerlo mediante https.
  • Sin embargo, los requisitos de seguridad dictan la seguridad de un extremo a otro, por lo que debemos utilizar https cuando hablemos con el servidor.
  • Ahora he podido hacer esto en un entorno de prueba usandotúnelcon la siguiente configuración:

archivo stunnel.conf:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
connect = the.real.server:443
  • Dada la configuración de stunnel anterior, puedo configurar mi cliente de prueba para usar la dirección del punto final http://localhost:3000/endpoint/url/y todo funciona bien.
  • Pero en el entorno de producción, el lado del cliente no tiene acceso directo a la red al servidor real. El tráfico HTTP/S del lado del cliente tiene que pasar por un servidor proxy.
  • Mis preguntas:
    • ¿Es posible configurar stunnel para conectarse mediante un servidor proxy?
    • Si no es posible usar stunnel, ¿hay otra manera de lograrlo?

Respuesta1

Parece ser compatible, pero elpágina de manual, pero el lenguaje está escrito de manera que más o menos hay que conocer los protocolos para entenderlo:

BajoProtocolopodemos ver lo siguiente:

connect Basado en RFC 2817 - Actualización a TLS Dentro de HTTP/1.1, sección 5.2 - Solicitud de un túnel con CONNECT Este protocolo solo se admite en modo cliente.

Más abajo encontramos lo siguiente:

protocoloHost = DIRECCIÓN dirección de host para las negociaciones del protocolo Para las negociaciones del protocolo de 'conexión', protocoloHost especifica HOST:PUERTO del servidor TLS final al que se conectará el proxy. El servidor proxy conectado directamente por stunnel debe especificarse con la opción de conexión.

Así podemos reconstruir esto:

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

No lo he probado, pero según la redacción de la documentación, debería funcionar como se desea.

Respuesta2

Puedes hacerlo con:

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

Necesitará un certificado de una autoridad certificadora para permitir conexiones de cliente https.

información relacionada