Servir resposta HTTPS do cache do Squid mesmo se o servidor upstream estiver inacessível

Servir resposta HTTPS do cache do Squid mesmo se o servidor upstream estiver inacessível

Eu configurei o Squid ssl_bumppara que ele possa fazer conexões HTTPS man-in-the-middle e armazenar em cache as respostas, assim:

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

Gostaria que o Squid aceitasse a conexão do cliente e tentasse servir a resposta do seu cacheantestentando se conectar ao servidor upstream.

No entanto, ele tenta se conectar ao servidor primeiro, retornando um erro 503 se o servidor não estiver acessível (porque a rede está offline, por exemplo):

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

Quando a rede estiver disponível e o host upstream estiver acessível, o Squid servirá com prazer a partir de seu cache na memória:

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

Responder1

Usar client-firstparece funcionar:

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

No entanto, esta é uma opção há muito obsoleta e não funcionará para interpor todos os tipos de conexão TLS.

informação relacionada