基于SQUID实现与上游服务器的双向TLS(Mutual TLS)可行性咨询
SQUID实现双向TLS证书中转方案
这个需求完全可以通过SQUID实现,核心是结合ssl-bump的流量劫持能力、客户端证书验证机制,以及上游TLS客户端证书配置,完成“内部服务证书验证→替换为上游认可证书”的双向TLS代理流程。下面是经过实践验证的配置步骤和排查要点:
关键配置环节
1. 开启SSL-Bump并强制验证内部客户端证书
首先要让SQUID作为网关时,必须验证内部服务发来的客户端证书。你需要准备签发内部服务证书的CA根证书,然后在SQUID的监听端口配置中加入验证规则:
# 监听443端口作为HTTPS代理,启用ssl-bump https_port 443 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB \ cert=/etc/squid/ssl/squid-gateway.crt key=/etc/squid/ssl/squid-gateway.key \ clientca=/etc/squid/ssl/internal-ca.crt verifyclient=REQUIRED
clientca:指定用于验证内部服务证书的CA根证书路径verifyclient=REQUIRED:强制要求客户端(内部服务)提供合法证书,验证失败直接拒绝连接
2. 配置上游服务器的双向TLS对接
接下来要让SQUID向上游服务器发起请求时,使用上游认可的客户端证书。如果只有单个上游,可以全局配置;如果有多个上游,可针对域名单独配置:
# 全局配置上游客户端证书(适用于单一上游场景) sslproxy_client_cert /etc/squid/ssl/upstream-client.crt /etc/squid/ssl/upstream-client.key # 针对特定上游域名配置专属证书(多上游场景) acl upstream_api dstdomain api.upstream.example.com sslproxy_client_cert_for upstream_api /etc/squid/ssl/upstream-api-client.crt /etc/squid/ssl/upstream-api-client.key # 信任上游服务器的CA根证书 sslproxy_cafile /etc/squid/ssl/upstream-ca.crt
3. 配置SSL-Bump规则确保流量正确处理
需要通过ssl_bump规则让SQUID先解析目标域名,再完成证书替换和转发:
acl ssl_step1 at_step SslBump1 ssl_bump peek ssl_step1 ssl_bump bump all
peek:先查看ClientHello获取目标域名,避免盲目生成证书bump:对所有流量执行证书替换和TLS中转
验证与排查
验证流程
- 重启SQUID生效配置:
systemctl restart squid - 查看访问日志确认状态:
tail -f /var/log/squid/access.log,正常请求会显示TCP_MISS/200或TCP_HIT/200 - 测试内部服务到SQUID的双向TLS:
openssl s_client -connect squid-gateway:443 -cert /path/to/internal-service.crt -key /path/to/internal-service.key -CAfile /etc/squid/ssl/squid-gateway-ca.crt - 测试SQUID到上游的双向TLS:
openssl s_client -connect api.upstream.example.com:443 -cert /etc/squid/ssl/upstream-client.crt -key /etc/squid/ssl/upstream-client.key -CAfile /etc/squid/ssl/upstream-ca.crt
常见失败原因排查
- 之前ssl-bump失败的核心原因:大概率是缺失客户端证书验证配置,比如没加
clientca和verifyclient参数,导致SQUID没有验证内部证书就直接转发,不符合你的需求 - 上游连接失败:检查上游客户端证书是否被上游CA信任,或者是否配置了正确的上游CA根证书
- 证书格式错误:确保所有证书/密钥都是PEM格式,私钥如果有密码,需要添加
sslproxy_client_key_password your-password配置
内容的提问来源于stack exchange,提问作者Mark Schenk
相关产品推荐
相关产品推荐

