gpt4 book ai didi

ssl - F5 iRule 管理 HTTP 代理 CONNECT 请求

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:26 24 4
gpt4 key购买 nike

我有一个 F5 虚拟服务器,在 Web 服务器前面配置了客户端 https 加密。

我希望这个 VS 也能管理 HTTP CONNECT 请求,这样客户端就可以将它作为 Web 服务器或代理来请求。

也就是说,VS应该解密所有的TCP连接,但是如果第一个TCP数据包以“CONNECT”开头,它应该首先响应HTTP 200,然后等待下一个数据包(必须是“client hello”)并处理 SSL 握手。

使用一些 iRule 当然是可能的,但我无法轻易找到解决方案,而且我在 Internet 上找不到任何帮助,因为 F5 文档未打开。有人知道怎么做吗?

最佳答案

我终于找到了解决办法。

VS 默认行为是从第一个 TCP 数据包开始处理 SSL 解密:所以必须查看第一个 TCP 数据包,如果它以 CONNECT 开头,

  • 禁用 SSL 解密,
  • 用 HTTP 200 响应,
  • 然后为紧随其后的“客户端问候”重新启用 SSL 解密

它在两种情况下都有效:

  • 在 TCP 上下文中,在 SSL 解密之前,检测 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"    }}

关于ssl - F5 iRule 管理 HTTP 代理 CONNECT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27693919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com