3
respostas

Múltiplos certificados (SSL) em uma aplicação SaaS na AWS

Olá! Excelente curso!

Em uma plataforma a ser disponibilizada como Saas (Software as a service), onde os assinantes do serviço poderão acessar seus respectivos ambientes por um subdomínio (nome-cliente.plataforma.com) ou utilizando um domínio próprio (via apontamento DNS), qual a opção mais escalável em relação ao uso de um certificado SSL por domínio? Em uma pesquisa inicial, uma opção seria trabalhar certificados utilizando SAN (Subject Alternative Name), direto no Load Balancer, porém, não escala (restrito a 100 domínios no Let's Encrypt, etc).

Alguns sugerem a criação de um novo Load Balancer por domínio a ser certificado (haja Load Balancer)...

Alguém tem uma sugestão/experiência em relação a múltiplos certificados em aplicações Saas na AWS?

Grato!

3 respostas

Oi Daniel,

Infelizmente essa é uma limitação dos ELBs e ao usar Amazon Certificate Manager o limite padrão é ainda menor: 10 domínios (mas é possível pedir um ajuste para 100).

Um LB por cliente pode ficar dificil de gerenciar em larga escala , dependendo da sua arquitetura. Uma alternativa (não ideal) seria colocar o certificado nas instâncias e apenas encaminhar as requisições. O que acha?

Abs e boa sorte!

Opa Daniel, alguma novidade?

Oi Leonardo, obrigado pela sugestão, estou em contato com o suporte da AWS por dias, examinando as possibilidades...

Levando em conta todos os aspectos da plataforma, a AWS não possui um serviço pronto que atenda este perfil de plataforma (Multi Tenant SaaS Apps). Obviamente é possível configurar um ambiente personalizado pra atender as demandas específicas do projeto... Um caminho que testei, foi montar um reverse proxy...

O reverse proxy (com Elastic IP atribuído) trata a terminação do SSL, e despacha as requisições para o ELB (entry point do Elastic Beanstalk).

A grande questão é que o padrão para este tipo de serviço é permitir que os clientes criem uma entrada do tipo 'A' em seus domínios, apontando para o IP da plataforma, e uma entrada 'CNAME' para dominio-personalizado.plataforma.com. Porém... ELB não possui um IP (só funciona como CNAME), CloudFront idem, Route 53 não resolve essa questão com redundância, etc...

Uma possível alternativa seria atribuir o Elastic IP a uma rede configurada como Failover (apenas com instâncias proxy), o que resolveria a redundância na entrada do sistema mas não resolveria as questões de segurança (existentes por padrão no ELB, CloudFront, etc...).

Enviei uma mensagem direta ao pessoal de arquitetura da AWS hoje pela manhã, estou aguardando o retorno deles, e neste meio tempo, também estou em contato com o pessoal da Cloudflare, sobre este serviço, que pode ajudar no quebra-cabeça:

Cloudflare SSL for SaaS https://blog.cloudflare.com/introducing-ssl-for-saas/

Grato, Daniel