0Pricing
Cloud & IT Cert Prep · Aula

Encerramento de SSL e sessões persistentes

Descarregue o TLS no balanceador de carga usando certificados do ACM e habilite sessões persistentes quando cargas de trabalho com estado exigirem afinidade com o cliente.

Encerramento de SSL e sessões persistentes é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

Terminação de SSL/TLS no balanceador de carga

Terminação de SSL/TLS significa que o balanceador de carga descriptografa o tráfego HTTPS recebido, inspeciona a solicitação HTTP em texto simples (para tomar decisões de roteamento) e, opcionalmente, criptografa a solicitação novamente antes de encaminhá-la ao backend. Quando a terminação ocorre no ALB, seus servidores de aplicação podem receber tráfego HTTP não criptografado do balanceador de carga, simplificando a configuração do backend.

A terminação no balanceador de carga reduz a sobrecarga de CPU nos servidores de aplicação (não há handshake TLS para cada conexão), permite o roteamento baseado em conteúdo (que exige a leitura dos cabeçalhos HTTP) e centraliza o gerenciamento de certificados.

Integração com o AWS Certificate Manager (ACM)

O AWS Certificate Manager (ACM) provisiona, gerencia e renova certificados SSL/TLS sem custo adicional. ALB e NLB integram-se diretamente ao ACM: você seleciona um certificado do ACM na configuração do listener HTTPS, e o balanceador de carga o apresenta aos clientes que se conectam.

Os certificados do ACM são renovados automaticamente antes do vencimento — sem renovação manual e sem indisponibilidade causada por certificados expirados. Para certificados públicos, o ACM valida a propriedade do domínio por meio da validação de DNS (registro CNAME no Route 53) ou da validação por e-mail. Para uso interno, o ACM Private CA pode emitir certificados privados.

# Request a public certificate in ACM
aws acm request-certificate \
  --domain-name api.example.com \
  --subject-alternative-names '*.example.com' \
  --validation-method DNS \
  --region us-east-1

# Create an HTTPS listener using the ACM certificate
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789:loadbalancer/app/my-alb/abc \
  --protocol HTTPS \
  --port 443 \
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \
  --certificates CertificateArn=arn:aws:acm:us-east-1:123456789:certificate/cert-id \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/my-tg/xyz

Indicação do nome do servidor (SNI)

SNI (Server Name Indication) é uma extensão TLS que permite que um único endereço IP (e, portanto, um único listener ALB ou NLB) disponibilize vários certificados TLS para diferentes nomes de domínio. O cliente inclui no handshake ClientHello do TLS o nome do host que está tentando acessar, e o balanceador de carga seleciona o certificado apropriado.

O ALB oferece suporte nativo a SNI: você pode anexar vários certificados do ACM a um único listener HTTPS. O ALB seleciona automaticamente o certificado correto com base no nome do host SNI do cliente. Isso elimina a necessidade de um listener ou balanceador de carga separado para cada domínio, permitindo hospedagem virtual com SSL.

# Add a second certificate to an existing HTTPS listener (SNI)
aws elbv2 add-listener-certificates \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc/lis456 \
  --certificates CertificateArn=arn:aws:acm:us-east-1:123456789:certificate/second-cert-id

Políticas de segurança SSL

ALB e NLB oferecem suporte a políticas de segurança SSL configuráveis, que controlam quais versões do protocolo TLS e conjuntos de cifras o balanceador de carga aceita dos clientes. A AWS fornece políticas predefinidas (por exemplo, ELBSecurityPolicy-TLS13-1-2-2021-06), que são atualizadas à medida que novas vulnerabilidades são descobertas.

Os requisitos de conformidade podem determinar versões específicas do TLS: PCI-DSS 3.2.1 exige no mínimo TLS 1.2; muitos padrões modernos recomendam desabilitar completamente TLS 1.0 e 1.1. Use uma política que exclua protocolos obsoletos e conjuntos de cifras fracos. Dê preferência a políticas que incluam TLS 1.3 para obter sigilo de encaminhamento e desempenho.

# List available SSL policies
aws elbv2 describe-ssl-policies \
  --query 'SslPolicies[*].{Name:Name,TLSVersions:SslProtocols}' \
  --output table

Criptografia de ponta a ponta versus terminação

Há duas abordagens distintas de TLS no ALB:

  • Terminação de SSL (mais comum): o ALB descriptografa no balanceador de carga e encaminha HTTP simples aos destinos. É simples, permite a inspeção para roteamento e reduz o uso de CPU do servidor. O tráfego do backend não é criptografado dentro da VPC.
  • TLS de ponta a ponta: o ALB descriptografa e depois criptografa novamente antes de encaminhar aos destinos (HTTPS entre o ALB e o destino). Consome mais CPU e exige certificados nos destinos, mas garante a criptografia dentro da VPC em cenários de conformidade rigorosa.

No modo de passagem de TLS do NLB: o NLB não descriptografa nada — ele encaminha o TCP bruto ao destino, que lida com o TLS. O servidor de aplicação gerencia seu próprio certificado.

Sessões persistentes: o que são e por que usá-las

Sessões persistentes (também chamadas de afinidade de sessão) garantem que todas as solicitações do mesmo cliente sejam encaminhadas consistentemente ao mesmo destino dentro de um grupo de destino. Isso é necessário para aplicações com estado que armazenam dados de sessão na memória de servidores individuais (em vez de usar um cache compartilhado como o ElastiCache).

Sem sessões persistentes, um balanceador de carga sem estado pode enviar a solicitação 1 ao servidor A (que armazena a sessão) e a solicitação 2 ao servidor B (que não tem os dados da sessão), fazendo o usuário parecer desconectado ou perder o conteúdo do carrinho. As sessões persistentes vinculam um cliente a um destino específico durante a sessão.

Persistência baseada em cookies no ALB

O ALB oferece suporte a dois tipos de cookies de sessão persistente:

  • Persistência baseada em duração (cookie gerado pelo LB): o ALB gera um cookie chamado AWSALB (para ALB) e define uma duração de expiração. O cookie contém uma referência criptografada ao destino. O cliente envia esse cookie nas solicitações seguintes.
  • Persistência baseada na aplicação: usa um cookie existente definido pela sua aplicação. O ALB lê o nome do cookie que você especifica, gera uma versão criptografada em seu próprio cookie e a usa para o roteamento persistente, preservando o cookie original da aplicação.

Configure a persistência por grupo de destino, com duração de 1 segundo a 7 dias.

# Enable duration-based sticky sessions on a target group
aws elbv2 modify-target-group-attributes \
  --target-group-arn arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/my-tg/xyz \
  --attributes \
    Key=stickiness.enabled,Value=true \
    Key=stickiness.type,Value=lb_cookie \
    Key=stickiness.lb_cookie.duration_seconds,Value=86400

Desvantagens das sessões persistentes

Embora as sessões persistentes resolvam o problema de aplicações com estado, elas introduzem algumas compensações:

  • Distribuição desigual de carga: alguns destinos podem receber mais tráfego se determinados clientes estiverem excepcionalmente ativos, comprometendo o objetivo do balanceamento de carga
  • Limitações de escalabilidade: se um destino persistente ficar não íntegro, as sessões serão interrompidas — o cliente precisará iniciar uma nova sessão com um novo destino, perdendo os dados da sessão mantidos na memória
  • Elasticidade reduzida: sessões persistentes dificultam a drenagem e o encerramento de instâncias durante eventos de redução de escala

Prática recomendada: elimine a necessidade de sessões persistentes externalizando o estado da sessão para o ElastiCache ou o DynamoDB. Isso torna sua aplicação realmente sem estado e permite a escalabilidade horizontal completa.

Listener TLS do NLB e passagem direta

O NLB oferece suporte a listeners TLS na porta 443 (ou em qualquer porta) para terminação de TLS, de forma semelhante ao ALB. O NLB descriptografa o tráfego, opcionalmente o criptografa novamente e o encaminha aos destinos. Como alternativa, o NLB pode passar o tráfego TCP criptografado sem descriptografá-lo se você configurar um listener TCP — nesse modo, o servidor de aplicação gerencia o TLS de ponta a ponta.

A terminação TLS do NLB com ACM oferece os mesmos benefícios de gerenciamento de certificados do ALB, mas sem os recursos da camada HTTP. Use a terminação TLS do NLB quando precisar de IPs estáticos com terminação TLS ou quando o protocolo do backend não for HTTP (por exemplo, um protocolo TCP personalizado).

Interação entre drenagem de conexões e sessões persistentes

Quando um destino persistente é removido do registro (por exemplo, durante uma redução de escala do Auto Scaling), a drenagem de conexões permite que as solicitações em andamento sejam concluídas. No entanto, novas solicitações de clientes persistentes que ainda tenham o cookie AWSALB do destino em drenagem são atribuídas automaticamente a um novo destino — o cookie de persistência é invalidado para esse cliente.

Essa combinação de atraso de remoção do registro e invalidação do cookie garante transições controladas: as solicitações existentes de longa duração são concluídas, enquanto as novas solicitações desses clientes são redirecionadas suavemente para destinos íntegros, sem parecerem erros para o usuário final.

Práticas recomendadas para SSL e gerenciamento de sessões

Práticas recomendadas relevantes para a prova:

  • Use certificados do ACM para renovação automática — nunca gerencie certificados manualmente nos balanceadores de carga
  • Use políticas de segurança de TLS 1.2+; desabilite TLS 1.0/1.1 para conformidade com PCI/HIPAA
  • Dê preferência a arquiteturas sem estado (sessão no ElastiCache/DynamoDB) em vez de sessões persistentes
  • Use SNI no ALB para disponibilizar vários domínios a partir de um listener, sem vários certificados em balanceadores de carga separados
  • Para conformidade rigorosa (dados dentro da VPC devem ser criptografados): use grupos de destino HTTPS com TLS de ponta a ponta, não apenas terminação no balanceador de carga

Verificação rápida

Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) apresentados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: a terminação de SSL/TLS do ALB com certificados do ACM fornece renovação automática e SNI para vários domínios; as políticas de segurança SSL controlam a versão do TLS e os conjuntos de cifras para fins de conformidade; e as sessões persistentes encaminham os usuários ao mesmo destino em aplicações com estado, mas é melhor substituí-las pela externalização do estado da sessão para o ElastiCache. A seguir, exploraremos grupos de Auto Scaling e modelos de inicialização.

Perguntas Frequentes

A aula “Encerramento de SSL e sessões persistentes” é grátis?

Sim — o texto completo de “Encerramento de SSL e sessões persistentes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Encerramento de SSL e sessões persistentes”?

Descarregue o TLS no balanceador de carga usando certificados do ACM e habilite sessões persistentes quando cargas de trabalho com estado exigirem afinidade com o cliente. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Encerramento de SSL e sessões persistentes”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. ALB versus NLB versus GLB: quando usar cada um
  2. Grupos de destino e verificações de integridade
  3. Regras de listener e roteamento baseado no caminho
  4. Encerramento de SSL e sessões persistentes
← Voltar para Cloud & IT Cert Prep