HTTPS 网站上的 Squid 代理“连接重置”

HTTPS 网站上的 Squid 代理“连接重置”

我使用 Linode 和 Squid3 作为代理,但无法让它与 https 网站配合使用。它通过 http 工作,但当我尝试访问具有 https 的网站时,说https://google.com/,我只得到一个:

The connection was reset
The connection to the server was reset while the page was loading.

更新:看来我只在家庭网络上遇到这些问题。尝试通过手机和另一个网络(不同的 ISP)共享,它起作用了。不太确定如何调试。检查路由器?ISP 可以阻止代理流量吗?(似乎很疯狂)

我正在使用Ubuntu 12.10,最初使用随安装的 squid3 apt-get install squid3squid -v显示:

Squid Cache: Version 3.1.20
configure options:  '--build=i686-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--with-cppunit-basedir=/usr' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM' '--enable-ntlm-auth-helpers=smb_lm,' '--enable-digest-auth-helpers=ldap,password' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-arp-acl' '--enable-esi' '--enable-zph-qos' '--enable-wccpv2' '--disable-translation' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=i686-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' --with-squid=/build/buildd/squid3-3.1.20

在尝试解决这些问题时,我注意到 squid3 未使用 进行编译--enable-ssl。因此,我使用 从源代码构建--enable-ssl,现在squid3 -v显示:

Squid Cache: Version 3.1.20
configure options:  '--build=i686-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--with-cppunit-basedir=/usr' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM' '--enable-ntlm-auth-helpers=smb_lm,' '--enable-digest-auth-helpers=ldap,password' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-arp-acl' '--enable-esi' '--enable-zph-qos' '--enable-wccpv2' '--enable-ssl' '--disable-translation' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--with-open-ssl=/etc/ssl/openssl.cnf' '--enable-linux-netfilter' 'build_alias=i686-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' --with-squid=/root/squid3-3.1.20

但我仍然遇到同样的错误。我的配置文件如下所示:

via off
forwarded_for delete
follow_x_forwarded_for deny all
acl SSL method CONNECT
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
acl theUser proxy_auth myuser
http_access allow theUser
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 1153
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .       0   20% 4320
cache_effective_user proxy
cache_effective_group proxy
https_port 1153 cert=/etc/squid3/ssl/squid.crt key=/etc/squid3/ssl/squid.key vhost

我已经尝试过 https_port 号码,所有端口均已打开,我可以telnet <IP> 1153建立连接。

我不太确定要尝试或做什么。我只想能够使用代理访问 https/ssl 站点。我需要其他模块吗?还是这是一个配置问题?我不需要任何缓存或任何东西,因为这只是一个简单的浏览器代理设置。

以下是 Firefox 中的代理设置: Firefox 代理设置

答案1

由于此代理服务器位于您测试的网络外部,因此您的 ISP(更有可能)或路由器可能阻止了任何包含该CONNECT指令的流量,而这正是您通过代理进行 SSL 会话所需要的。

如果您使用 SSL 连接到代理(将该https_port行放回),那么他们将看不到会话的内容,因此也看不到CONNECT

但是,通过 https 连接到代理服务器很困难。一种方法是建立到代理服务器的 VPN 或 SSL 隧道并通过隧道访问代理,从而避免需要使 https 代理正常工作。这也可以作为一个很好的测试来确认是您的 ISP 导致断开连接。您可以使用 ssh 执行此操作:

ssh -L1153:127.0.0.1:1153 proxy

然后将浏览器代理服务器设置为127.0.0.1和 端口1153。发送到本地端口的任何流量1153都将通过 ssh 隧道发送到1153代理上的端口。

有多种方法可以通过 SSL 访问代理服务器,Firefox 扩展。还有几种方法可以在 Chrome 中执行此操作,可以使用以下方法运行:

chrome --proxy-server=https://proxy:1153

或者使用定义了 https 代理的代理自动配置脚本:

function FindProxyForURL(url, host) { return "HTTPS proxy:1153"; }

您可以使用与评论中相同的技巧来确保 squid ssl 证书没有问题:

openssl s_client -connect proxy:1153

相关内容