Squid

即使上游伺服器無法訪問,也從 Squid 記憶體中提供 HTTPS 響應

  • October 24, 2021

我已經配置了 Squid,ssl_bump以便它可以在中間人 HTTPS 連接中記憶體回复,如下所示:

http_port 3128 ssl-bump \
 cert=/etc/squid/certs/squid-ca-cert-and-key.pem \
 generate-host-certificates=on dynamic_cert_mem_cache_size=16MB

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

我希望 Squid 在嘗試連接到上游伺服器之前接受客戶端的連接並嘗試從其記憶體中提供響應。

但是,它首先嘗試連接到伺服器,如果伺服器不可訪問(例如,因為網路離線),則返回 503 錯誤:

1635102093.658     13 172.17.0.1 NONE/200 0 CONNECT deb.nodesource.com:443 - HIER_NONE/- -
1635102093.673      0 172.17.0.1 NONE/503 4110 GET https://deb.nodesource.com/setup_12.x - HIER_NONE/- text/html

當網路可用並且可以訪問上游主機時,Squid 將愉快地從其記憶體記憶體中提供服務:

1635102172.772    101 172.17.0.1 NONE/200 0 CONNECT deb.nodesource.com:443 - HIER_DIRECT/18.2.197.72 -
1635102172.792      1 172.17.0.1 TCP_MEM_HIT/200 14319 GET https://deb.nodesource.com/setup_12.x - HIER_NONE/- text/plain

使用client-first似乎有效:

acl step1 at_step SslBump1
ssl_bump client-first step1
ssl_bump bump all

然而,這是一個長期棄用的選項,它無法插入所有類型的 TLS 連接。

引用自:https://unix.stackexchange.com/questions/674635