我在Web服务器前面配置了使用客户端https加密的F5虚拟服务器。
我希望这个VS能够管理HTTP CONNECT请求,以便客户端可以将其作为Web服务器或代理请求。
也就是说,VS应解密所有TCP连接,但如果第一个TCP数据包以“CONNECT”开头,它应首先响应HTTP 200,然后等待下一个数据包(必须是“客户端问候”)并处理SSL握手。
对于某些iRule肯定是可能的,但我无法轻易获得解决方案,而且我无法在Internet上找到任何帮助,因为F5 doc没有打开。任何男孩都知道怎么做吗?
答案 0 :(得分:1)
我终于找到了解决方案。
VS默认行为是从第一个TCP数据包处理SSL解密: 因此,必须查看第一个TCP数据包,如果它以CONNECT开头,
它适用于两种情况:
并在HTTP上下文中,正确响应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" } }