在 Debian 机器上,Squid 和 Apache 正在运行。HTTPs 已通过 Certbot(Lets Encrypt)启用。
我有几个域(Vhost),并且所有域都使用一个 IP 地址。
Apache 正在监听端口 81 (HTTP) 和 444 (HTTPS)
我的 squid.conf 如下所示:
# Incoming Connections
http_port 80 accel
cache_peer localhost parent 81 0 no-query originserver
https_port 443 acceldefaultsite=yourwebserver vhost
cache_peer localhost parent 444 0 no-query originserver
# ACL
http_access allow all
# Allowed Ports
acl SSL_ports port 443 # https
acl Safe_ports port 80 # http
acl CONNECT method CONNECT
我的问题:当我使用上述配置启动服务时,Squid 要求证书来启用 HTTPS。
但对于每个域,我都使用不同的证书。如何强制 Squid 将 443 重定向到 444 localhost?
答案1
Squid 要求提供证书以启用 HTTPS
这就是 HTTPS 的整个概念。您将肯定需要证书才能提供受证书保护的内容。否则您将没有 http 代理,而是使用 NAT 或 TCP 代理(如带有 UPSTREAM 提供商的 nginx)。
但对于每个域我都使用不同的证书。
这就是 SSL (TLS) 的理念,也是您可以(读作:您必须)配置具有不同属性的不同侦听器的原因。或者您只使用 TCP 转发而不终止(读作:卸载)SSL。
在squid3
vhost中配置如下:
https_port serverone.com:443 cert=/etc/ssl/serverone.pem vhost
https_port servertwo.com:443 cert=/etc/ssl/servertwo.pem vhost
cache_peer lanserverone parent 80 0 name=lanserverone no-query originserver
cache_peer_domain lanserverone serverone.com
cache_peer lanservertwo parent 80 0 name=lanservertwono-query originserver
cache_peer_domain lanservertwo servertwo.com
我怎样才能强制 Squid 将 443 重定向到 444 localhost
答案:不可以。尝试使用上游的 nginx 或仅在路由器上执行 NAT。