2014-12-29 4 views
0

웹 서버 앞에 클라이언트 측 https 암호화로 구성된 F5 가상 서버가 있습니다.F5 HTTP 프록시 연결 요청을 관리하는 iRule

나는이 VS가 HTTP CONNECT 요청을 관리하여 클라이언트가 웹 서버 나 프록시로 요청할 수 있기를 바랍니다.

즉, VS는 모든 TCP 연결을 해독해야하지만 첫 번째 TCP 패킷이 "CONNECT"로 시작하면 먼저 HTTP 200에 응답해야하며 다음 패킷 ("client hello"이어야 함) SSL 핸드 셰이크를 처리합니다.

일부 iRule에서는 가능하지만 솔루션을 쉽게 얻을 수 없으며 F5 doc이 열려 있지 않기 때문에 인터넷에서 도움을 얻을 수 없습니다. 누가 그걸하는지 어떻게 알지?

답변

1

마지막으로 해결책을 찾았습니다.

은 VS 기본 behavour 바로 첫 번째 TCP 패킷에서 SSL 암호 해독을 처리하는 것입니다 : 그것은 CONNECT로 시작하면, 그렇게 하나가 첫 번째 TCP 패킷을보고해야하며,

  • 비활성화 SSL 암호 해독

    , HTTP 200
  • 응답, 그것은 모두 환경에서 작동 직후

를 제공한다 "클라이언트 안녕하세요"에 대한

  • 다음 다시 활성화 SSL 암호 해독 : TCP 컨텍스트에서

    • , SSL 암호 해독하기 전에, 제대로 CONNECT 요청

       
      when CLIENT_ACCEPTED {  # TCP CONTEXT 
          TCP::collect 7   # look at the first 7 bytes of TCP stream 
      } 
      when CLIENT_DATA { 
          if { [TCP::payload] starts_with "CONNECT" } { 
           SSL::disable  # disable SSL decryption 
          } 
      } 
      
      when HTTP_REQUEST {  # HTTP CONTEXT 
          if { [HTTP::method] eq "CONNECT" } { 
           HTTP::respond 200 # send HTTP 200 
           SSL::enable  # re-enable SSL decryption for next "client hello" 
          } 
      } 
      
    에 응답하기 위해, CONNECT 요청
  • 및 HTTP 컨텍스트를 감지하는