Proxy Squid "Conexão redefinida" em sites HTTPS

0

Eu estou usando um Linode e Squid3 como proxy, mas não posso fazê-lo funcionar com sites https. Está a trabalhar sobre o http, mas quando tento visitar um site com https, digamos https://google.com/ Eu acabei de receber um:

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

Atualizar: Parece que estou tendo apenas esses problemas na minha rede doméstica. Tentando compartilhar para o meu telefone e em outra rede (em um ISP diferente) ele funciona. Não tenho certeza como depurar isso. Verifique o roteador? O ISP pode bloquear o tráfego de proxy? (Parece nozes)

estou a usar Ubuntu 12.10, e foi inicialmente usando o squid3 instalado com apt-get install squid3. squid -v mostrou:

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

Em minhas tentativas de resolver esses problemas, notei que o squid3 não foi compilado com --enable-ssl. Então eu construí da fonte com --enable-ssl, e agora squid3 -v mostra:

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

E ainda recebo o mesmo erro. Meu arquivo de configuração é assim:

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

Eu brinquei com o número https_port e todas as portas estão abertas, como eu posso telnet <IP> 1153e obtenha uma conexão.

Eu não tenho certeza do que tentar ou fazer. Eu só quero poder visitar sites https / ssl com o proxy. Preciso de outros módulos ou isso é um problema de configuração? Eu não preciso de qualquer cache ou qualquer coisa, pois isso é apenas uma configuração simples de proxy do navegador.

Aqui estão as configurações de proxy no firefox: Firefox proxy settings

ErikPerik
fonte
Funciona se você comentar a linha começando https_port 1153 (isto é para acessar o squid através do ssl em vez de acessar sites ssl, portanto, pode ser desativado para este teste) e usar http nas configurações de proxy do navegador?
Paul
Eu removi a linha https_port e ainda estou recebendo o mesmo problema. Eu atualizei a postagem com uma captura de tela das configurações de proxy do Firefox.
ErikPerik
Talvez desligue a autenticação do usuário? Parece que deve funcionar, você tem alguma pista nos logs do squid?
Paul
@Paul eu desliguei a autenticação do usuário - nada diferente aconteceu. Eu verifiquei o access.log e cache.log para o squid, e nada é registrado ao visitar sites https (que falham). Se eu visitar qualquer outro site http, as linhas serão adicionadas ao access.log. Existem outros logs que posso verificar?
ErikPerik
Aguarde, você tem o openssl instalado?
Paul

Respostas:

1

Como este servidor proxy é externo à rede da qual você está testando, parece provável que seu ISP (mais provável) ou roteador esteja bloqueando qualquer tráfego que contenha CONNECT diretiva, que é o que você precisa para uma sessão SSL através de um proxy.

Se você se conectar ao proxy usando SSL (colocando isso https_port linha de volta), então eles não veriam o conteúdo da sessão e assim não veriam CONNECT.

Conectar a um servidor proxy através de https é difícil no entanto. Uma abordagem seria estabelecer um túnel VPN ou SSL para o servidor proxy e acessar o proxy pelo túnel, evitando a necessidade de obter o proxies https funcionando. Isso também serviria como um bom teste para confirmar que é o seu ISP causando a desconexão. Você pode fazer isso usando o ssh:

ssh -L1153:127.0.0.1:1153 proxy

Em seguida, defina o servidor proxy do navegador para 127.0.0.1 e porta 1153. Qualquer tráfego enviado para a porta local 1153 será enviado pelo túnel ssh para o porto 1153 no proxy.

Existem maneiras de acessar um servidor proxy através de SSL, existe um extensão para o Firefox . Há também algumas maneiras de fazer isso com o Google Chrome: execute-o usando:

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

Ou use o script de configuração automática de proxy que possui um proxy https definido:

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

Você pode usar o mesmo truque que nos comentários para se certificar de que os certificados SSL do squid estão ok:

openssl s_client -connect proxy:1153
Paul
fonte
Então abri o túnel ssh -L1153:127.0.0.1:1153 proxyipe defina o proxy para 127.0.0.1 e 1153, mas ainda obtém o mesmo resultado. Conexão redefinida ao visitar sites https. O que isso poderia indicar? Poderia ainda ser o provedor ou roteador?
ErikPerik
Infelizmente não, o tráfego é criptografado usando esse método. Você obtém a mesma coisa com outros dispositivos na mesma rede?
Paul
Usando o proxy http no meu iphone conectado ao mesmo wifi, e teve o mesmo problema. Isso está ficando estranho.
ErikPerik
Estou certo no meu entendimento que o servidor proxy não está na rede que estamos falando, é externo em algum lugar? Existe alguma referência ao intervalo de IP desta rede no squid.conf?
Paul
Sim, o servidor proxy é um linode localizado nos EUA. Não, eu não adicionei nada em relação ao IP das redes no squid.conf. Você quer dizer o IP dos servidores proxy ou o IP das minhas redes domésticas?
ErikPerik