Desejo bloquear determinados urls para alguns usuários da minha rede interna. Estou usando um proxy explícito baseado em squid para esse propósito com um redirect_program. Os clientes são configurados para usar um arquivo pac para URLs https, o que os faz rotear suas solicitações https para o proxy explícito.
O problema é que o redirecionamento de qualquer solicitação CONNECT de um URL https para um URL de página bloqueada falha. Eu tentei URLs de página bloqueada baseados em http e https, mas não consegui encontrar nenhuma sorte. Por alguns motivos, não quero usar um proxy transparente com ssl bumping.
O Safari apresenta o erro 'O Safari não pode abrir a página. O erro foi "Ocorreu um problema ao estabelecer um túnel seguro por meio do servidor proxy da web"'
O Chrome dá o erro 'Esta página da web não está disponível. ERR_TUNNEL_CONNECTION_FAILED'.
Aqui está uma linha de access.log para https://www.yahoo.com .
07/out/2015:01:41:29 -0500 74 172.0.0.9 TCP_REDIRECT/302 253 CONNECT www.yahoo.com:443 - HIER_NONE/- -
Li em algum lugar que o navegador espera iniciar um handshake SSL/TLS após a solicitação de conexão e é por isso que está falhando. Aqui está uma citação da documentação do redirecionador squid.
"Alterações de URL e particularmente redirecionamento só são possíveis em determinados métodos, e alguns como POST e CONNECT requerem cuidados especiais."
Não diz que o redirecionamento não é possível para o método CONNECT. No entanto, em nenhum lugar é mencionado que como podemos redirecionar POST e CONNECT (estou particularmente interessado em CONNECT) ou qualquer exemplo é fornecido.
Por favor, oriente-me sobre como redirecionar solicitações de conexão https para uma página bloqueada. Se isso não for possível, existe uma solução alternativa para isso com proxy explícito? Obrigada.
Estou usando o squid 3.5.4 no ubuntu.
Infelizmente, isso não é possível sem bater (descriptografar) a conexão SSL primeiro. Os navegadores, por design, negam qualquer carga útil/redirecionamento adicional de solicitações CONNECT com falha. Para uma descrição mais formal, consulte - http://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html .
Se você decidir executar a descriptografia SSL, é possível primeiro permitir que a solicitação CONNECT seja bem-sucedida e, posteriormente, bloquear/redirecionar a próxima solicitação HTTP proveniente deste túnel de conexão estabelecido - leve em consideração que, se pode nem ser HTTP, pois alguns aplicativos usam CONNECT tunelamento de proxy para seus próprios protocolos (como o Skype, por exemplo).
Também algo a ter em mente - se o aplicativo usou a técnica de "fixação SSL" ao fazer solicitações CONNECT para o proxy - ele se recusará a trabalhar com conexões descriptografadas.