2017-01-14 2 views
0

클라이언트에서 CONNECT 메소드를 수신 한 후 http 프록시가 수행하는 ssl 터널링 프로세스를 고민하고 있습니다.HTTP 프록시 SSL 터널링 릴레이 세부 정보

물건 I 찾거나 문서, 블로그, RFC에 이해할 수없는 것 :

1) 터널을 설정할 때, 클라이언트 - 프록시와 프록시 대상이 개 별도의 연결이나 단지에서 두 개의 연결은 하나? 예 : client-proxy와 proxy-destination 사이의 TCP 핸드 셰이크가 있습니까?

2) ssl 핸드 셰이크를 시작할 때 클라이언트가 어떤 노드를 대상으로합니까 (IP 주소/호스트 이름)? 프록시 또는 대상 호스트? ssl은 인증 작업을 수행하기 위해 지점 간 연결을 필요로하기 때문에 내 호스트가 목적지 호스트라고 말해야합니다. 그러나 목적지 호스트가 클라이언트 관점 (즉, 프록시)에서 (직접적으로) 액세스 할 수 없기 때문에 다시는 의미가 없습니다.

답변

1

터널을 설정할 때 client-proxy와 proxy-destination의 두 연결은 두 개의 개별 연결입니까, 아니면 하나만 연결됩니까? 예 : client-proxy와 proxy-destination 사이의 TCP 핸드 셰이크가 있습니까?

클라이언트가 프록시에 TCP 연결을하기 때문에 프록시가 서버에 다른 TCP 연결을 설정하는 것 외에는 다른 방법이 없습니다. 기존의 TCP 연결을 다른 IP : 포트에 연결하도록 변경하는 방법은 없습니다.

클라이언트가 ssl 핸드 셰이크를 시작할 때 대상 노드 (ip 주소/호스트 이름)는 무엇입니까? 프록시 또는 대상 호스트?

SSL 핸드 셰이크는 프록시가 아닌 대상 호스트에서 수행됩니다. SSL 이후

는 인증

그것은 포인트 - 투 - 포인트 연결이 필요하지 않습니다를 만들기 위해 포인트 - 투 - 포인트 연결이 필요합니다. 프록시가 단순히 데이터를 전달할 때 클라이언트와 서버간에 모든 데이터가 수정되지 않고 교환되어야합니다.

+0

클라이언트가 클라이언트의 관점에서 라우팅 할 수 없으므로 클라이언트가 대상 호스트와의 ssl 핸드 셰이크를 수행하는 방법을 실제로 이해하지 못합니다. 프록시가 라우터의 기능을 수행합니까? 나는 이것을 얻지 못한다 :/ – Marc

+0

@Marc : 자신을 인용하기 : * 프록시가 단순히 데이터를 전달할 때 *. 예, 프록시는 데이터를 전달하지만 아니요, 라우터로 작동하지 않습니다. 라우터는 패킷이 네트워크 계층에서 전달되는 동안 프록시는 세션 계층에서 패킷 내용을 전달합니다. [OSI 모델] (https://en.wikipedia.org/wiki/OSI_model)을 참조하십시오. 그러나 TLS 핸드 셰이크의 경우 패킷 내용 만 관련됩니다. –

+0

좋아, 이제 알았어. 따라서 SSL 핸드 쉐이크를 시작할 때 클라이언트는 clienthello 메시지를 client-proxy 사이에 이미 열려있는 tcp cxn에 넣습니다. 일단 프록시에 도착하면, 이미 열려있는 tcp가 프록시 - 목적지 사이에서 중계 할 수 있도록 중계합니다. 옳은? – Marc