即使上游服务器无法访问,也可以从 Squid 缓存提供 HTTPS 响应

即使上游服务器无法访问,也可以从 Squid 缓存提供 HTTPS 响应

我已经配置了 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

答案1

使用client-first似乎有效:

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

然而,这是一个长期不推荐使用的选项,并且无法插入每种类型的 TLS 连接。

相关内容