Squid v3.5.27启用SSLbump后认证用户遭403拒绝问题求助
解决Squid SSL-Bump场景下已认证用户触发TCP_DENIED/403的问题
从你的日志和配置来看,问题的核心在于SSL-Bump封装请求的认证处理逻辑:
当启用ssl_bump bump all时,Squid会先和客户端建立SSL连接(此时完成用户认证),然后再与目标服务器建立连接,这个过程中产生的内层封装请求,Squid会跳过认证检查(日志里的SslBumped request: It is an encapsulated request do not authenticate就是明证)。但你的basicauth ACL(proxy_auth_regex -i service)会被应用到所有请求上,包括这些封装请求——而此时Squid无法获取到用户名信息,导致proxy_auth_regex的匹配结果异常(误判为匹配,即basicauth = 1),最终触发http_access deny basicauth规则,返回403。
解决方案:区分初始请求与SSL-Bump封装请求
我们需要调整规则,让基于用户名的ACL检查只作用于初始的客户端请求,而跳过封装请求。具体步骤如下:
- 修改
squid.conf,新增一个ACL来匹配未被SSL-Bump封装的初始请求:
acl non_ssl_bumped not ssl_bumped
- 调整
http_access deny basicauth规则,限制其仅对初始请求生效:
# 原规则:http_access deny basicauth # 修改为: http_access deny basicauth non_ssl_bumped
- 完整的配置片段如下:
acl auth proxy_auth REQUIRED acl basicauth proxy_auth_regex -i service acl non_ssl_bumped not ssl_bumped http_access deny !auth http_access deny basicauth non_ssl_bumped http_access allow all http_port 0.0.0.0:3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/etc/squidCA.pem ssl_bump bump all sslproxy_cert_error deny all sslproxy_flags DONT_VERIFY_PEER sslcrtd_program /usr/lib64/squid/ssl_crtd -s /etc/squid/ssl_db -M 10MB
- 重启Squid服务:
service squid restart
原理说明
ssl_bumpedACL会匹配所有被SSL-Bump处理的封装请求,non_ssl_bumped则匹配初始的客户端请求- 修改后的规则只会在用户首次连接代理(完成认证的阶段)检查用户名是否为
service开头,拒绝这类用户;而后续的封装HTTPS请求不会再触发这个检查,已认证的合法用户(比如你的USERTEST)就能正常访问目标网站
内容的提问来源于stack exchange,提问作者Pavelll
相关产品推荐
相关产品推荐

