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

12

Estamos usando o servidor proxy do 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 solicitações HTTPS?

    
por Supratik 18.01.2012 / 10:47

4 respostas

11

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

Veja como você faria isso.

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

Advertências:

  1. Seus usuários vão te odiar. Cada solicitação SSL para esse site apresentará uma janela de certificado inválida.
  2. Você está se expondo a potenciais ações judiciais por fazer coisas ruins. (IANAL)
  3. Você só poderá obter um certificado autoassinado para isso, devido a como a rede de confiança PKI para Certificados SSL deve funcionar. Não dizendo nada sobre as autoridades de certificação raiz comprometidas.

Eu não vou lhe dar os detalhes exatos de como fazer isso, porque a) eu acho que é um pouco antiético, e b) É melhor para você para aprender como fazer isso.

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

    
por 18.01.2012 / 12:36
5

Não, não há: eles são criptografados ... Uma solução alternativa seria algo como uma implantação man-in-middle , mas isso derrotaria todas as razões por trás do link .

    
por 18.01.2012 / 10:55
4

Apenas para explicar por que isso não pode ser feito sem o MITM - um proxy só vê o nome DNS do servidor ao qual você deseja se conectar ao usar o HTTPS criptografado. Não vê o URL nem os cabeçalhos de resposta. Ele não pode determinar qual recurso individual você está acessando em um site, se ele pode ser armazenado 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 porque o proxy não sabe o que os objetos armazenados em cache devem fornecer a você, ou como obtê-los em primeiro lugar.

    
por 10.02.2012 / 00:06
1

O Zeus (Now Riverbed's) ZTM Traffic Manager pode fazer isso, pois pode traduzir tráfego https e https nos dois 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 .

    
por 18.01.2012 / 12:42