如何配置Squid的https_port(3129端口)实现TLS内容缓存?
解决Squid 6.5 HTTPS缓存配置问题
问题根源
当前配置采用TCP隧道模式(日志中TCP_TUNNEL)转发HTTPS请求,Squid无法解密内容,因此无法实现缓存。添加ssl-bump时因语法错误导致启动失败。
正确配置步骤
1. 修正https_port语法
Squid 6.x中ssl-bump作为https_port的模式选项,需保证参数格式正确,避免单行过长引发解析错误。正确配置如下:
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
2. 确认sslcrtd_program配置有效性
- 验证证书生成工具路径:执行
ls -l /lib/squid/security_file_certgen,确保文件存在且可执行 - 创建并授权SSL证书缓存目录(若不存在):
mkdir -p /usr/local/squid/var/cache/squid/ssl_db chown proxy:proxy /usr/local/squid/var/cache/squid/ssl_db - 保持
sslcrtd_program配置不变:sslcrtd_program /lib/squid/security_file_certgen -c -s /usr/local/squid/var/cache/squid/ssl_db -M 4MB
3. 添加SSL Bump规则
配置解密规则,让Squid能够处理HTTPS内容缓存:
acl all src all ssl_bump stare all ssl_bump bump all
ssl_bump stare all:让Squid获取SSL握手信息ssl_bump bump all:解密所有HTTPS请求,为缓存提供前提
4. 启用HTTP缓存(可选)
若需同时缓存HTTP请求,添加标准HTTP端口及缓存基础配置:
http_port 3128 cache_dir ufs /var/spool/squid 1000 16 256 cache_mem 256 MB maximum_object_size 100 MB
5. 验证配置并重启服务
- 检查配置语法:
squid -k parse - 初始化SSL证书缓存(首次配置执行):
/lib/squid/security_file_certgen -c -s /usr/local/squid/var/cache/squid/ssl_db -M 4MB - 重启Squid:
systemctl restart squid
6. 测试缓存效果
执行测试命令后,查看日志应出现TCP_MEM_HIT或TCP_REFRESH_HIT(表示缓存生效):
curl --proxy-insecure --proxy https://localhost:3129 https://assets-global.website-files.com tail -f /var/log/squid/access.log
关键说明
- 你的Squid已满足
ssl-bump所需编译条件(--enable-ssl-crtd和--with-openssl),无需重新编译 - 客户端需信任Squid的CA证书(
/etc/squid/squid-ca-cert.pem),否则需用--proxy-insecure跳过验证 - HTTPS缓存依赖中间人解密,Squid会动态生成目标站点证书完成SSL握手
内容的提问来源于stack exchange,提问作者tarasvbs
相关产品推荐
相关产品推荐

