프록시를 통해 HTTPS 연결을 수행할 수 있는 HTTP-HTTPS 로컬 프록시

프록시를 통해 HTTPS 연결을 수행할 수 있는 HTTP-HTTPS 로컬 프록시

거래는 다음과 같습니다.

  • 우리의 클라이언트 소프트웨어는 http 프로토콜을 통해서만 연결할 수 있으며 https는 할 수 없습니다.
  • 그러나 보안 요구 사항에 따라 엔드투엔드 보안이 요구되므로 서버와 통신할 때 https를 사용해야 합니다.
  • 이제 테스트 환경에서 다음을 사용하여 이 작업을 수행할 수 있습니다.충격을 주다다음 구성으로:

stunnel.conf 파일:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
connect = the.real.server:443
  • 위의 stunnel 구성을 사용하면 엔드포인트 주소를 사용하도록 테스트 클라이언트를 구성할 수 http://localhost:3000/endpoint/url/있으며 모든 것이 제대로 작동합니다.
  • 그러나 프로덕션 환경에서는 클라이언트 측에서 .real.server에 대한 직접 네트워크 액세스 권한이 없습니다. 클라이언트 측의 Http/s 트래픽은 프록시 서버를 통과해야 합니다.
  • 내 질문:
    • 프록시 서버를 사용하여 연결하도록 stunnel을 구성할 수 있습니까?
    • Stunnel을 사용할 수 없다면 이를 수행할 수 있는 다른 방법이 있습니까?

답변1

지원되는 것 같으나,매뉴얼 페이지, 그러나 언어를 이해하려면 프로토콜을 어느 정도 알아야하도록 언어가 작성되었습니다.

아래에규약우리는 다음을 볼 수 있습니다:

connect RFC 2817 기반 - HTTP/1.1 내에서 TLS로 업그레이드, 섹션 5.2 - CONNECT를 사용하여 터널 요청 이 프로토콜은 클라이언트 모드에서만 지원됩니다.

더 아래로 내려가면 다음을 찾을 수 있습니다.

ProtocolHost = 프로토콜 협상을 위한 ADDRESS 호스트 주소 '연결' 프로토콜 협상을 위해, protocolHost는 프록시에 의해 연결될 최종 TLS 서버의 HOST:PORT를 지정합니다. stunnel로 직접 연결되는 프록시 서버는 connect 옵션으로 지정해야 합니다.

따라서 우리는 이것을 하나로 묶을 수 있습니다:

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

테스트하지는 않았지만 문서의 표현에 따르면 원하는 대로 작동할 것입니다.

답변2

다음을 사용하여 수행할 수 있습니다.

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

https 클라이언트 연결을 허용하려면 인증 기관의 인증서가 필요합니다.

관련 정보