HTTPS 代理也需要发送自己的证书链
把客户端到 Squid 的 TLS 监听端上缺失的中间证书与目标网站证书分开诊断。
如果客户端在访问网站之前就拒绝 HTTPS 代理,请检查代理监听端发送的证书链。单有有效的叶证书可能并不提供客户端所需的中间证书。
- 确认正在检查的端点。 读取已配置的代理 URL 中的主机名以及该连接的报错。监听端证书必须覆盖这个名称。网站证书或另一个 IP 别名的证书都不能取而代之。
- 检查监听端的证书链配置。 Squid 支持的 OpenSSL 配置可以在证书文件中包含中间证书。请针对已安装的 Squid 版本和 TLS 后端,在监听端参考文档中确认具体摆放方式;各打包版本的行为并不一致。Squid 6.13 的 TLS 监听端示例把监听端的信任与目标 TLS 分开。
- 单独检查客户端信任。 发送中间证书有助于构建证书链,但客户端仍然需要预期的根信任锚。不加区分地把整条服务器证书链导入根存储,与修正服务器发送的内容是两件不同的事。
保持验证开启。它能确定客户端打算使用的 HTTPS 代理。该连接通过验证后,之后再出现的网站证书错误属于经由代理的目标 TLS 会话,需要单独排查其主机名和信任问题。