거래는 다음과 같습니다.
- 우리의 클라이언트 소프트웨어는 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 클라이언트 연결을 허용하려면 인증 기관의 인증서가 필요합니다.