Vários certificados SSL com proxy reverso do Squid

1

Eu tenho atualizado minha rede de usar um proxy reverso do apache (não bastante poderoso) para um proxy Squid configurado apenas para uso reverso.

Meu proxy squid está em uma VM do CentOS 6 e atualmente está sendo executado junto com meu proxy apache pré-existente - então ainda tenho o squid em execução na porta 3128.

Eu tenho essa configuração no meu /etc/squid/squid.conf,

http_port 3128 accel vhost
visible_hostname squid

cache_peer 192.168.0.13 parent 80 0 no-query originserver name=server1
cache_peer_domain server1 www.server1.com server1.com

cache_peer 192.168.0.14 parent 80 0 no-query originserver name=server2
cache_peer_domain server2 www.server2.com server2.com

cache_peer 192.168.0.15 parent 80 0 no-query originserver name=server3
cache_peer_domain server3 www.server3.com server3.com

http_access allow all

Isso funciona perfeitamente para todas as conexões HTTP.

Direciona

www.server1.com:3128

para

192.168.0.13:80

Eu tenho tentado implementar certificados SSL para dois dos três domínios. Ontem à noite eu consegui obter algumas configurações bem-sucedidas para uma conexão HTTPS totalmente funcional para um dos meus domínios.

Eu adicionei essa configuração antes das configurações de HTTP:

https_port 443 accel ssl-bump transparent vhost cert=/usr/ssl/CA/server1.crt key=/usr/ssl/CA/server1.key

cache_peer 192.168.0.12 parent 443 0 no-query originserver login=PASS ssl sslflags=DONT_VERIFY_PEER name=server1_ssl
cache_peer_domain server1_ssl ssl www.server1.com server1.com

Isso pareceu estar bem ontem à noite. Ele se conectaria a

https:// www.domain1.com

totalmente criptografado. Por causa de uma das opções (tentativa e erro - não se lembra qual), ela descriptografa os pacotes e direciona a solicitação HTTPS para a VM correta. A VM já tinha o certificado SSL instalado, portanto, reconhecia solicitações HTTPS, e todo o pageload do início ao fim era criptografado.

Eu poderia visitar https://www.domain2.com e ele diria que a conexão foi parcialmente criptografada e mostraria um erro de certificado de que o certificado era para www.domain1.com

No entanto, hoje, isso estava realmente interferindo na conexão HTTP com o domínio1, e meu navegador estava dizendo que a página estava sendo redirecionada de uma maneira que nunca será concluída.

Eu removi desde então toda a configuração da conexão SSL do arquivo de configuração, e estou executando apenas HTTP padrão.

Existe alguma maneira de obter https: // www.domain1.com para ler cert domain1.crt e direcionar para a VM do domínio1 e https: // www.domain2.com para ler cert domain2.crt e direcionar para VM do domínio2?

Desculpe por uma pergunta tão longa, mas é uma questão muito específica que tenho tido, e tentei fornecer o máximo de informações possível.

Obrigado

    
por DJ-P.I.M.P 17.11.2013 / 18:41

1 resposta

3

O Squid não suporta SNI o que está escrito aqui . Então, para ter no Squid:

https://server1.com (cert for server1.com) => http://mylanip1
https://server2.com (cert for server2.com) => http://mylanip2

você precisa:

  1. Coloque os endereços em IPs diferentes, porque um certificado é atribuído a um par uniqe [IP, port].
  2. Configure o Squid assim:
https_port server1.com:443 cert=/etc/ssl/server1.pem vhost
https_port server2.com:443 cert=/etc/ssl/server2.pem vhost

cache_peer mylanip1 parent 80 0 name=lanip1 no-query originserver
cache_peer_domain lanip1 server1.com

cache_peer mylanip2 parent 80 0 name=lanip2 no-query originserver
cache_peer_domain lanip2 server2.com

Seria melhor se você tivesse servidores em subdomínios de um domínio para o qual você possui um certificado curinga (por exemplo, s1.myserver.com, s2.myserver.com, certificado para * .myserver.com). Então você poderia usar apenas uma entrada https_port

https_port 443 cert=/etc/ssl/wildcard.myserver.com.pem vhost

Então é possível no squid.

Mas esse caso simples é muito mais fácil de fazer com httpd e Hosts virtuais baseados em nome . Você salvará um IP público. No Centos 6, o openssl e o httpd suportam o SNI. É visível a partir da versão openssl. (Veja aqui e aqui )

    
por 21.10.2014 / 10:11