You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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中转

验证与排查

验证流程

  1. 重启SQUID生效配置:systemctl restart squid
  2. 查看访问日志确认状态:tail -f /var/log/squid/access.log,正常请求会显示TCP_MISS/200或TCP_HIT/200
  3. 测试内部服务到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
    
  4. 测试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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:55:24