Existe alguma maneira de armazenar em cache solicitações HTTPS em um servidor proxy?

12

Estamos usando o servidor proxy Squid em nosso ambiente e queremos armazenar em cache solicitações HTTPS.

Existe alguma maneira de configurar o Squid ou, em geral, um servidor proxy para armazenar em cache solicitações HTTPS?

Supratik
fonte
Isso provavelmente pertence a security.se
Tom O'Connor
1
Só para esclarecer, você está usando o squid na frente de vários servidores próprios ou entre as estações de trabalho e a Internet?
Zoredache
Só para esclarecer. Deseja armazenar em cache solicitações ou respostas?
Gqqnbig

Respostas:

12

Existe uma maneira de fazer isso, mas é fundamentalmente contra as razões do uso do HTTPS.

Aqui está como você faria isso.

  1. Gere um certificado SSL autoassinado para o site do qual você deseja interceptar e armazenar em cache as solicitações.
  2. Instale e execute o stunnel no servidor proxy, informando que o certificado que ele deve apresentar é o gerado no estágio 1.
  3. Encaminhe os pedidos descriptografados para o squid.
  4. Pode ser necessário um stunnel do outro lado ou openssl_client para criptografar novamente a solicitação no servidor upstream.

Ressalvas:

  1. Seus usuários vão te odiar. Toda solicitação SSL para esse site apresentará uma janela de certificado inválida.
  2. Você está se expondo a possíveis ações judiciais por fazer coisas malcriadas. (IANAL)
  3. Você só poderá obter um certificado autoassinado trabalhando para isso, por causa do funcionamento da web de confiança da PKI para certificados SSL. Sem dizer nada sobre CAs raiz comprometidas.

Não vou lhe dar os detalhes exatos de como fazer isso, porque a) acho que é antiético eb) é melhor você aprender como fazê-lo.

Sugiro que você pesquise como funcionam os ataques de stunnel e man-in-the-middle.

Tom O'Connor
fonte
Você pode solicitar à Trustwave zdnet.com/… que lhe venda um certificado raiz, para que você possa implementar esta solução sem incomodar os usuários: P
Rory
2
Na verdade, se você estiver em um domínio, é muito mais fácil gerar sua própria CA e implantar os certificados públicos para isso com a Diretiva de Grupo.
Tom O'Connor
1
Confiar em um SSC + MITM é útil para depuração de protocolos, armazenamento em cache, inspeção profunda de pacotes e censura / registro. : / Além desses motivos, não é tão bom.
6

Apenas para explicar por que isso não pode ser feito sem o MITM - um proxy vê apenas o nome DNS do servidor ao qual você deseja se conectar ao usar HTTPS criptografado. Ele não vê o URL nem cabeçalhos de resposta. Ele não pode determinar qual recurso individual você está acessando em um site, se é ou não armazenável em cache, nem quais são os tempos de modificação. Tudo o que podemos ver é que alguém quer algo de um servidor remoto usando HTTPS.

Isso significa que o armazenamento em cache não pode funcionar, pois o proxy não sabe quais objetos em cache serão fornecidos ou como obtê-los em primeiro lugar.

Robf
fonte
5

Não, não há: eles são criptografados ... Uma solução alternativa seria algo como uma implantação intermediária , mas isso derrotaria todos os motivos por trás do https .

yrk
fonte
1
Não há solução alternativa para conseguir isso ou forçar o servidor proxy a descriptografar e armazenar em cache?
Supratik
Uma solução alternativa seria um pouco que refaça a man-in-middleimplantação, mas isso derrotaria todos os motivos por trás de https
yrk
5
Não concordo que isso derrotaria todos os motivos por trás do https. Se você fizer isso em casa e possuir o proxy, seus dados ainda usarão https entre o proxy e os sites.
Brunoqc
@brunoqc é o trabalho de uma VPN.
Yrk
1
Se o cache de https https for importante por algum motivo ou a depuração de uma sessão https, o MITM será super útil. De fato, é assim que Charles trabalha.
1

O ZTM Traffic Manager da Zeus (agora da Riverbed) pode fazer isso, pois pode traduzir o tráfego http e https em ambos os sentidos e armazenar em cache conteúdo não criptografado - funciona, nós o usamos, mas é assustadoramente caro - como no preço de um Porsche por servidor.

Chopper3
fonte
5
Mas ainda requer que você instale um novo certificado raiz no cliente, não é? E você ainda precisa confiar no proxy, não é?
phihag