我正在尝试使用 Squid Cache 启用 HTTP 和 HTTPS 连接的内容缓存。我在 Ubuntu 24.04 上运行
squid-openssl
包中的 6.5 版本。 我确认二进制文件使用 OpenSSL 并使用配置选项进行编译:--with-openssl
和 --enable-ssl-crtd
我的设置中有以下配置行:
https_port 3129 tls-cert=/etc/squid/squid-ca-cert.pem tls-key=/etc/squid/squid-ca-key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /lib/squid/security_file_certgen -c -s /usr/local/squid/var/cache/squid/ssl_db -M 4MB
当我运行
curl --proxy-insecure --proxy https://localhost:3129
时,它可以工作,但在日志中我看到内容看起来没有缓存:
1711580401.645 162 192.168.65.1 TCP_TUNNEL/200 41698 CONNECT assets-global.website-files.com:443 - HIER_DIRECT/54.230.18.101 -
1711580403.972 92 192.168.65.1 TCP_TUNNEL/200 41699 CONNECT assets-global.website-files.com:443 - HIER_DIRECT/54.230.18.101 -
1711580404.771 103 192.168.65.1 TCP_TUNNEL/200 41700 CONNECT assets-global.website-files.com:443 - HIER_DIRECT/54.230.18.101 -
当我将
ssl-bump
指令添加为:
https_port 3129 ssl-bump tls-cert=/etc/squid/squid-ca-cert.pem tls-key=/etc/squid/squid-ca-key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
我收到以下错误:
FATAL: Bungled /etc/squid/squid.conf line 42: https_port 3129 ssl-bump tls-cert=/etc/squid/squid-ca-cert.pem tls-key=/etc/squid/squid-ca-key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
如何使用 TLS 在 3129 上配置
https_port
,使其真正缓存请求?
我刚刚经历了几周的挣扎。多年来的文档现在相互冲突,或者自动处理,很难找出您需要的内容。
我正在 Alpine 上运行
squid
版本 6.8,编译了我们需要的所有 SSL 优点。我的场景是有一个父代理始终使用
配置为反向代理(
accel
模式):
cache_peer squidparent.example.com parent 443 0 no-query default ssl name=myAccel no-digest tls-cert=/etc/squid/certs/tls.crt tls-key=/etc/squid/certs/tls.key
cache_peer_access myAccel allow localnet
cache_peer_access myAccel deny all
http_port 3128 accel defaultsite=squidparent.example.com no-vhost
https_port 3129 accel defaultsite=squidparent.example.com generate-host-certificates=on tls-cert=/etc/squid/certs/tls.crt tls-key=/etc/squid/certs/tls.key no-vhost
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/cache/squid/ssl_db -M 20MB
sslproxy_cert_error allow all
cache_peer_access myAccel allow localnet
cache_peer_access myAccel deny all
确保您的 TLS 证书
Subject
是您用来寻址鱿鱼代理的名称
我想您只对缓存 HTTPS 内容感兴趣,而不对请求进行任何其他处理,并且您不需要加密从客户端到代理的连接(因为您似乎在同一台计算机上完成这一切) 。在这种情况下,您不需要使用
https_port
设置,只需将 http_port
更改为使用 ssl-bump
就足够了。
但是,您还需要确保
ssl_bump
配置正确,不要建立隧道连接。结果配置可能看起来像这样:
http_port 3128 ssl-bump tls-cert=/etc/squid/squid-ca-cert.pem tls-key=/etc/squid/squid-ca-key.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
ssl_bump bump all
然后,在您的客户端上,使用
export http_proxy=http://localhost:3128
设置代理,您应该能够使用 HTTP 或 HTTPS 运行任何简单的 curl
命令,并且两者都由 Squid 缓存。