Forma escalonável de instalar certificados SSL sem tempo de inatividade

3

Temos um aplicativo SaaS que permite que os clientes usem seu próprio domínio - bastante típico. Em sua essência, a arquitetura tem um host virtual simples (apache) e o software faz o trabalho de resolver qual cliente é baseado no nome do host.

No entanto, muitos de nossos clientes exigem que o domínio personalizado ofereça suporte a SSL. Atualmente, fazemos isso adicionando um host virtual (de maior precedência) a um certificado SSL e reiniciando o apache.

Enquanto isso funciona, há vários problemas:

  1. Você tem que reiniciar o apache, o que significa baixa momentânea, ou alternar o DNS para uma pilha de servidores inteiramente nova.

  2. Se houver um problema que não detectamos com o certificado SSL, o Apache lança um erro fatal e não poderá reiniciar.

  3. Seria impossível, ou pelo menos impraticável, distribuir isso para milhares de usuários.

Em resumo - não é escalável. Nós exploramos a terminação SSL no balanceador de carga ... é promissor, mas não podemos encontrar nenhum balanceador de carga que suporte vários certificados SSL (via SNI).

Seguir adiante é cada vez mais uma gargantilha do produto - a ponto de estarmos dispostos a alterar a arquitetura ou nos afastarmos do apache, se necessário.

    
por jpschroeder 14.06.2016 / 15:32

2 respostas

2

We've explored SSL termination at the load balancer...it's promising, but we can't find any load balancers that support multiple SSL certificates (via SNI)

Realmente? Eu tive que dobrar o tempo de postagem desta pergunta para ter certeza de que não era um necro-thread de um ano porque eu não consigo pensar em nenhum balanceador de carga que não suporte o SNI em 2016 .

Apesar de eu estar mais familiarizado com o HAProxy que tem suporte SNI desde 1.5 , que aparentemente saiu em junho de 2014.

Embora o 1.5 não suporte tecnicamente atualizações de tempo de inatividade real para alterações de configuração, ele possui uma opção de "recarregamento rápido" que geralmente é rápida o suficiente para não impactar um site típico. Mas se você realmente quiser chegar lá, há uma postagem no blog da Engenharia do Yelp descrevendo um método para fazer recarregamentos "true downtime zero" que envolve algum trabalho extravagante com Linux tc e iptables para atrasar pacotes SYN durante uma recarga. Do artigo:

Restarting HAProxy has basically no effect on our traffic, causing only minor delays as can be seen in Figure 3. Note that this method is heavily dependent on how long HAProxy takes to load its configuration, and because we are running such a reduced configuration, these results are deceivingly fast. In our production environment we do observe about a 20ms penalty during HAProxy restarts.

    
por 15.06.2016 / 06:31
1

Um balanceador de carga significa reiniciar um servidor esgotado e não é algo que deva ser evitado.

O cliente pode solicitar um novo domínio ou certificado. No próximo lote de atualizações, essa alteração está em uma nova configuração implantada em alguns servidores da web. Drene os servidores da Web antigos e pare-os em zero conexões. Novas conexões estão indo para a nova configuração de trabalho. Se houver algum problema, reverta para a última configuração.

Adicione servidores da Web ao balanceador de carga por motivos de desempenho e disponibilidade. Adicione balanceadores de carga quando a complexidade da configuração for muito grande.

    
por 15.06.2016 / 03:59