Cada servidor atrás de um balanceador de carga precisa de seu próprio certificado SSL?

66

Se você possui 5 servidores Web atrás de um balanceador de carga (como haproxy) e eles estão exibindo conteúdo para o mesmo domínio, você precisa de certificados SSL para todos os servidores ou pode usar o mesmo certificado em cada servidor?

Eu sei que você pode colocar todas as solicitações SSL em um servidor específico, mas isso requer informações de sessão distribuídas e espero que não cheguem a isso.

Derek Gathright
fonte

Respostas:

66

Se você possui 5 servidores Web atrás de um balanceador de carga (...), precisa de certificados SSL para todos os servidores,

Depende.

Se você fizer o balanceamento de carga na camada TCP ou IP (camada OSI 4/3, também conhecida como L4, L3), sim, todos os servidores HTTP precisarão ter o certificado SSL instalado.

Se você carregar o saldo na camada HTTPS (L7), normalmente instala o certificado apenas no balanceador de carga e usa HTTP simples não criptografado na rede local entre o balanceador de carga e os servidores da web (para obter melhor desempenho no servidores web).

Se você tiver uma instalação grande , poderá fazer Internet -> balanceamento de carga L3 -> camada de concentradores SSL L7 -> balanceadores de carga -> camada de servidores de aplicativos HTTP L7 ...

Willy Tarreau, o autor do HAProxy, tem uma ótima visão geral das formas canônicas de balanceamento de carga HTTP / HTTPS .

Se você instalar um certificado em cada servidor, obtenha um certificado que suporte isso. Normalmente, os certificados podem ser instalados em vários servidores, desde que todos os servidores atendam ao tráfego apenas para um nome de domínio totalmente qualificado. Mas verifique o que você está comprando, os emissores de certificados podem ter um portfólio de produtos confuso ...

Jesper Mortensen
fonte
11
Agora você pode comprar certificados com nomes alternativos de assuntos de vários emissores. O campo SAN permite um certificado válido para vários FQDNs. AVISO ... Pode haver alguns problemas com clientes Web mais antigos (IE6!). Em alguns casos, o cliente não lê o atributo SAN se o atributo Subject tiver um FQDN inválido.
Ryan Fisher
4
Mais 1 por link para esse excelente artigo de Willy Tarreau.
Nathan Hartley
Em instalações de médio a grande porte, fazer o descarregamento de SSL no Big IP ou em outro balanceador de carga (segunda opção listada acima) tem as vantagens de ser mais rápido, mais escalável, menos complicado (geralmente um certificado no LB) e mais barato do certificado lado do licenciamento (certificados de vários domínios e SAN ficam caros).
Darrell Teague
15

Você deve poder usar o mesmo certificado em cada servidor. Se o seu site for www.gathright.com, você poderá comprar um certificado para esse FQDN. Em seguida, você o instala em cada um dos seus 5 servidores atrás do balanceador.

Como alternativa, você pode obter um certificado separado para cada servidor da Web, mas incluir 'www.gathright.com' como um "Nome alternativo do assunto", o que significa que cada um dos cinco certificados seria válido para SSL para o FQDN geral e para o SSL para os FQDNs específicos do servidor.

Ryan Fisher
fonte
6
Para esclarecer esta resposta, você instalará o certificado no servidor que gerou a solicitação. Você exportaria o certificado desse servidor junto com a chave privada para importá-lo nos outros servidores.
Charles
D'oh! Sim, esqueci de mencionar que você precisa exportar a chave privada. Obrigado, Charles.
Ryan Fisher
Mas se eu usar SAN CERTS em cada servidor, eles precisam da mesma chave privada?
anschoewe
@anschoewe, não. Cada um deles teria sua própria chave privada e você teria que pagar x5 o preço se tiver cinco computadores.
Alexis Wilke
11
@AlexisWilke - não sei ao certo o que isso significa: se eles usam um certificado SAN, eles precisam apenas de um certificado e, portanto, de uma chave e, portanto, de um preço. Os certificados SAN podem ser usados ​​em vários servidores para servir um ou mais domínios; o preço sobe quando a adição de domínios , não ao adicionar servidores
dwanderson
12

SIM , você pode usar o mesmo certificado e chave privada associada em todos os seus servidores, se estiverem atrás de um balanceador de carga ou proxy reverso de balanceamento de carga e se estiverem servindo conteúdo para o mesmo domínio.

Os certificados, quando assinados por uma autoridade de certificação, afirmam que a autoridade de certificação verificou o nome listado no certificado. Para certificados para sites, isso significa o nome de domínio do site. Seu navegador espera que o servidor com o qual está falando, se estiver usando HTTPS, apresente um certificado com o mesmo nome que o nome de domínio com o qual o navegador pensa que está falando. (Por exemplo, é provável que a VeriSign não assine o certificado de Hacker Joe para bankofamerica.com. Portanto, mesmo que o Hacker Joe consiga interceptar o tráfego entre você e o bankofamerica.com, o Hacker Joe não terá um certificado assinado para bankofamerica.com e seu navegador colocará grandes bandeiras vermelhas em todo o lugar.)

O que importa é que o nome no certificado corresponda ao nome de domínio com o qual o navegador pensa que está falando. Você pode usar o mesmo certificado (com chave privada associada) com o nome correto em vários servidores da Web em um cluster da Web, desde que estejam atrás de um balanceador de carga.

Você também pode usar um balanceador de carga com terminação SSL; nesse caso, você usaria o certificado (com chave privada associada) no balanceador de carga, e os servidores Web não precisariam de certificados porque não teriam nada a ver com o SSL.

yfeldblum
fonte
6

Nossa configuração funcionou muito bem:

https trafic
     |
   pound
     |
http traffic
     |
  haproxy
     |
http traffic 
     |
web server 1 ... web server n

Dessa forma, a libra descriptografa o tráfego, a partir daqui tudo é http direto. Vantagens: menos configuração nos servidores web, uma ferramenta para cada trabalho. Você pode maximizar a CPU na máquina da libra e manter os servidores da Web "normais". Você deve obter pelo menos dois de cada (libra, haproxy, servidores web), se o tempo de atividade for importante.

jotango
fonte
2
Isso também pressupõe que seus computadores back-end estejam em uma rede privada segura. Na nuvem que nem sempre é o caso ...
Alexis Wilke
3

AFAIR, você pode usar o mesmo certificado em cada servidor. Você também pode implementar um acelerador SSL e descarregar todo o tráfego SSL para ele.

joeqwerty
fonte