프록시 - -->서버 이 환경에서 클라이언트는 http 프록시 뒤에 있으며 클라이언트는 프록시 http 터널을 활용해야 합니다."/> 프록시 - -->서버 이 환경에서 클라이언트는 http 프록시 뒤에 있으며 클라이언트는 프록시 http 터널을 활용해야 합니다.">

>백엔드 개발 >Golang >http 프록시 터널을 통해 Client Hello를 보내는 방법

http 프록시 터널을 통해 Client Hello를 보내는 방법

王林
王林앞으로
2024-02-12 18:06:15491검색

如何通过 http 代理隧道发送 Client Hello

질문 내용

백엔드 서비스에 대한 TLS 연결을 설정하는 클라이언트가 있습니다.

제가 겪은 상황은 두 가지입니다.

  1. 네트워크 직접 연결: 클라이언트 --->서버

    이 환경에서는 다음 코드와 같이 클라이언트가 서버에 직접 연결됩니다.

으아아아
  1. 프록시 네트워크: 클라이언트--->프록시--->서버

    이 환경에서 클라이언트는 http 프록시 뒤에 있으며 클라이언트는 프록시 http 터널을 활용하여 클라이언트와 서버 간에 트래픽을 전달해야 합니다.

    클라이언트 측에서 golang.org/x/net/proxy를 사용하여 프록시에 연결합니다. 프록시는 http 프록시이므로 클라이언트는 net.dialer를 사용하여 tcp를 통해 프록시에 연결해야 합니다.

으아아아

사례 1, 클라이언트는 네트워크 트래픽 패킷에서 tls 연결을 시작합니다. 3번의 핸드셰이크 후에 클라이언트는 client hello를 서버로 보냅니다.

케이스 2의 경우 클라이언트는 먼저 tcp를 사용하여 http 프록시(예: 10.0.0.1:8080)에 연결하고, 다음으로 프록시에 connect를 보낸 다음 프록시가 connectionowned를 반환합니다. , 그러나 클라이언트는 connect到代理,然后代理返回connectionestablished,但是客户端发送client hello를 서버로보냅니다.

case2의 경우 클라이언트 측에서 전송을 구현하는 방법과 위치를 모르겠습니다 client hello?

미리 감사드립니다.

Solution

go doc을 검색한 후 해결책을 찾았습니다. 나중에 비슷한 문제를 겪는 사람들에게 도움이 되길 바랍니다.

tls에는 기존 네트워크에서 구축할 수 있는 client 기능이 있습니다. Conn, 그럼 Handshake

를 사용해 보세요 으아아아

위 내용은 http 프록시 터널을 통해 Client Hello를 보내는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제