我正在尝试使用 squid 作为单个网站前面的反向代理,解密代理上的 SSL,然后加密与 Web 服务器的连接(这是为了将 squid 用作零信任 CDR 产品的 ICAP 客户端)。
我发现这需要两行配置:
https_port 1.2.3.4:443 accel
用于侦听器和
cache_peer 1.2.4.8 parent 443
用于 Web 服务器。
按照我在这里和其他地方找到的示例,我遇到了 Squid 的各种错误,特别是这个:
FATAL: No valid signing certificate configured for HTTPS_port
已知有效的 Squid 4.x 配置将会非常有帮助!
答案1
显然,我找到的例子都是针对早期版本的 squid 的。
对于这个问题,我的主要结论是配置行中的cert=
和不再正确,我们需要使用和来代替。key=
https_port
tls-cert=
tls-key=
因此(对于 Squid v4.15)我只需要 Web 服务器证书及其私钥,以及 squid.conf 中的以下几行:
https_port 1.2.3.4:443 accel defaultsite=mysite.com tls-cert=/etc/squid/myserver.pem
cache_peer 1.2.4.8 parent 443 0 no-query originserver login=PASS ssl
这适用于包含证书和未加密私钥的 .PEM。如果密钥位于单独的文件中,则应该有效:
https_port 1.2.3.4:443 accel defaultsite=mysite.com tls-cert=/etc/squid/myserver.pem tls-key=/etc/squid/myserver.key
cache_peer 1.2.4.8 parent 443 0 no-query originserver login=PASS ssl
如果该密钥已加密,则您需要手动启动 squid(例如在会话squid -N
中运行screen
)或添加sslpassword_program
配置行以提供 PEM 密码。
http_port 3128
注意:我发现squid 启动时仍然需要http_port 配置行(例如)。
所有配置文件指令都记录在这里:http://www.squid-cache.org/Doc/config/