Criar um receptor HTTPS para seu Application Load Balancer - Elastic Load Balancing

Criar um receptor HTTPS para seu Application Load Balancer

Um receptor verifica se há solicitações de conexão. Você define um listener ao criar seu load balancer e você pode adicionar listeners ao seu load balancer a qualquer momento.

Para usar um receptor HTTPS, você deve implantar pelo menos um certificado de servidor SSL em seu balanceador de carga. O load balancer usa um certificado de servidor para encerrar a conexão front-end e descriptografa solicitações dos clientes antes de enviá-las aos destinos. Você também deve especificar uma política de segurança que será usada para negociar conexões protegidas entre os clientes e o balanceador de carga.

Se precisar transmitir tráfego criptografado para destinos sem que o balanceador de carga o decodifique, você poderá criar um Network Load Balancer ou Classic Load Balancer com um receptor TCP na porta 443. Com um receptor TCP, o balanceador de carga transmite o tráfego criptografado para os destinos sem descriptografá-lo.

Os Application Load Balancers não são compatíveis com autenticação TLS mútua (mTLS). Para compatibilidade com mTLS, crie um receptor TCP usando um Network Load Balancer ou um Classic Load Balancer e implemente o mTLS no destino.

Os Application Load Balancers não são compatíveis com chaves ED25519.

As informações dessa página ajudam você a criar um listener HTTPS para o load balancer. Para adicionar um listener HTTPS ao seu load balancer, consulte Criar um receptor HTTP para seu Application Load Balancer.

Certificados SSL

O load balancer requer certificados X.509 (certificados de servidor SSL/TLS). Os certificados são uma forma digital de identificação emitida por uma autoridade certificadora (CA). Um certificado contém informações de identificação, período de validade, chave pública, número de série e a assinatura digital do emissor.

Quando você cria um certificado para uso com seu load balancer, é necessário especificar um nome de domínio. O nome de domínio no certificado deve corresponder ao registro de nome de domínio personalizado para que possamos verificar a conexão TLS. Se eles não coincidirem, o tráfego não será criptografado.

Você precisa especificar um nome de domínio totalmente qualificado (FQDN) para seu certificado, como www.example.com ou um nome de domínio de apex como example.com. Você também pode usar um asterisco (*) como um caractere curinga para proteger vários nomes de site no mesmo domínio. Quando você solicita um certificado-curinga, o asterisco (*) deve estar na posição mais à esquerda do nome do domínio e só pode proteger um nível de subdomínio. Por exemplo,*.example.com protege corp.example.com e images.example.com, mas não pode proteger test.login.example.com. Note também que *.example.com protege apenas os subdomínios de example.com, mas não protege o domínio vazio ou apex (example.com). O nome-curinga será exibido no campo Assunto e na extensão Nome alternativo do assunto do certificado. Para obter mais informações sobre certificados públicos, consulte Solicitação de um certificado público no Manual do usuário do AWS Certificate Manager.

Recomendamos que você crie certificados para o seu balanceador de carga usando o AWS Certificate Manager (ACM). O ACM é compatível com comprimentos de chave de 2.048, 3.072 e 4.096, e com todos os certificados ECDSA. O ACM se integra ao Elastic Load Balancing para que você possa implantar o certificado em seu balanceador de carga. Para obter mais informações, consulte o Guia do usuário do AWS Certificate Manager.

Como alternativa, você pode usar ferramentas de SSL/TLS para criar uma Certificate signing request (CSR – Solicitação de assinatura de certificado), então obter a assinatura de um CA na CSR para produzir um certificado, e importá-lo para o ACM ou fazer upload do certificado no AWS Identity and Access Management (IAM). Para obter mais informações sobre a importação de certificados para o ACM, consulte Importação de certificados no Guia do usuário do AWS Certificate Manager. Para obter mais informações sobre a upload de certificados no IAM, consulte Trabalhar com certificados de servidor no Manual do usuário do IAM.

Certificado padrão

Quando você cria um listener HTTPS, deve especificar exatamente um certificado. Esse certificado é conhecido como o certificado padrão. É possível substituir o certificado padrão depois de criar o listener HTTPS. Para obter mais informações, consulte Substituir o certificado padrão.

Se você especificar certificados adicionais em uma lista de certificados, o certificado padrão será usado somente se um cliente se conectar sem usar o protocolo Server Name Indication (SNI) para especificar um nome de host ou se não houver certificados correspondentes na lista de certificados.

Se você não especificar certificados adicionais, mas precisar hospedar vários aplicativos seguros por meio de um único load balancer, poderá usar um certificado curinga ou adicionar um Subject Alternative Name (SAN) para cada domínio adicional ao seu certificado.

Lista de certificados

Após criar um listener HTTPS, ele terá um certificado padrão e uma lista de certificados vazia. Você pode adicionar certificados à lista de certificados para o listener. O uso de uma lista de certificados permite que um load balancer ofereça suporte a vários domínios na mesma porta e forneça um certificado diferente para cada domínio. Para obter mais informações, consulte Adicionar certificados à lista de certificados.

O load balancer usa um algoritmo inteligente de seleção de certificado com suporte para SNI. Se o nome de host fornecido por um cliente corresponder a um único certificado na lista, o load balancer selecionará esse certificado. Se um nome de host fornecido por um cliente corresponder a vários certificados na lista, o load balancer selecionará o melhor certificado que o cliente puder comportar. A seleção do certificado se baseia nos critérios a seguir, na seguinte ordem:

  • Algoritmo de chave pública (prefira ECDSA em relação a RSA)

  • Algoritmo hashing (prefira SHA em relação a MD5)

  • Comprimento da chave (prefira o maior)

  • Período de validade

As entradas no log de acesso do load balancer indicam o hostname especificado pelo cliente e o certificado apresentado ao cliente. Para obter mais informações, consulte Entradas do log de acesso.

Renovação de certificado

Cada certificado vem com um período de validade. Você deve garantir que renovou ou substituiu os certificados do load balancer antes do fim do período de validade. Isso inclui o certificado padrão e os certificados em uma lista de certificados. Renovar ou substituir um certificado não afeta as solicitações em andamento recebidas por um nó do load balancer e são pendentes de roteamento para um destino íntegro. Depois de um certificado ser renovado, as novas solicitações usarão o certificado renovado. Depois de o certificado ser substituído, as novas solicitações usarão o novo certificado.

Você pode gerenciar a renovação e a substituição do certificado da seguinte forma:

  • Certificados fornecidos pelo AWS Certificate Manager e implantados no seu load balancer podem ser renovados automaticamente. O ACM tenta renovar os certificados antes que eles expirem. Para obter mais informações, consulte Renovação gerenciada no Guia do usuário do AWS Certificate Manager.

  • Se você tiver importado um certificado no ACM, deverá monitorar a data de validade do certificado e renová-lo antes que expire. Para obter mais informações, consulte Importar certificados no Manual do usuário do AWS Certificate Manager.

  • Se você tiver importado um certificado para o IAM, precisará criar um novo certificado, importá-lo para o ACM ou IAM, adicionar o novo certificado ao balanceador de carga e remover o certificado expirado do seu balanceador de carga.

Políticas de segurança

O Elastic Load Balancing usa uma configuração de negociação com Secure Sockets Layer (SSL), conhecida como política de segurança, para negociar conexões SSL entre um cliente e o balanceador de carga. Uma política de segurança é uma combinação de cifras e protocolos. O protocolo estabelece uma conexão segura entre um cliente e um servidor, além de garantir que todos os dados passados entre o cliente e o load balancer sejam privados. A cifra é um algoritmo de criptografia que usa chaves de criptografia para criar uma mensagem codificada. Os protocolos usam várias cifras para criptografar dados pela Internet. Durante o processo de negociação de conexão, o cliente e o load balancer apresentam uma lista de cifras e protocolos que cada um suporta, em ordem de preferência. Por padrão, a primeira cifra na lista do servidor que corresponder a qualquer uma das cifras do cliente é selecionada para a conexão segura.

Os Application Load Balancers são compatíveis com renegociação de SSL apenas para conexões de destino.

Ao criar um receptor HTTPS, é necessário selecionar uma política de segurança. É possível atualizar a política de segurança conforme necessário. Para obter mais informações, consulte Atualizar a política de segurança.

Você pode escolher a política de segurança usada para conexões front-end. Para conexões de back-end, se seu receptor HTTPS estiver usando uma política de segurança TLS 1.3, a política de segurança ELBSecurityPolicy-TLS13-1-0-2021-06 será usada. Caso contrário, a política de segurança ELBSecurityPolicy-2016-08 sempre será usada para as conexões de back-end. Os Application Load Balancers não são compatíveis com políticas de segurança personalizadas.

nota

As políticas de TLS 1.3 para Application Load Balancers são compatíveis exclusivamente na nova experiência do EC2. Ao usar a antiga experiência do EC2, as políticas do TLS 1.3 não estarão disponíveis para seleção.

O Elastic Load Balancing fornece as seguintes políticas de segurança para Application Load Balancers:

  • ELBSecurityPolicy-TLS13-1-2-2021-06*

  • ELBSecurityPolicy-TLS13-1-2-Res-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06

  • ELBSecurityPolicy-TLS13-1-1-2021-06

  • ELBSecurityPolicy-TLS13-1-0-2021-06

  • ELBSecurityPolicy-TLS13-1-3-2021-06

  • ELBSecurityPolicy-FS-1-2-Res-2020-10

  • ELBSecurityPolicy-FS-1-2-Res-2019-08

  • ELBSecurityPolicy-FS-1-2-2019-08

  • ELBSecurityPolicy-FS-1-1-2019-08

  • ELBSecurityPolicy-FS-2018-06

  • ELBSecurityPolicy-TLS-1-2-Ext-2018-06

  • ELBSecurityPolicy-TLS-1-2-2017-01

  • ELBSecurityPolicy-TLS-1-1-2017-01

  • ELBSecurityPolicy-2016-08**

  • ELBSecurityPolicy-TLS-1-0-2015-04

  • ELBSecurityPolicy-2015-05 (idêntico a ELBSecurityPolicy-2016-08)

Você pode usar uma das políticas ELBSecurityPolicy-TLS para atender aos requisitos de conformidade e padrões de segurança que exigem a desativação de determinadas versões do protocolo TLS ou para oferecer suporte a clientes herdados que exigem cifras desaprovadas. Somente uma pequena porcentagem dos clientes da Internet exigem TLS versão 1.0. Para visualizar a versão do protocolo TLS das solicitações para seu load balancer, habilite o log de acesso para o seu load balancer e examine os logs de acesso. Para obter mais informações, consulte Logs de acesso.

*Para receptores HTTPS, recomendamos a política de segurança ELBSecurityPolicy-TLS13-1-2-2021-06. Essa é a política padrão para receptores HTTPS criados usando o AWS Management Console. Essa política de segurança inclui o TLS 1.3, que é otimizado para segurança e desempenho, e retrocompatível com o TLS 1.2.

**A política ELBSecurityPolicy-2016-08 é a política de segurança padrão para receptores criados usando a AWS CLI.

Se precisar de Forward Secrecy (FS – Sigilo de encaminhamento), é possível usar uma das seguintes políticas:

  • Qualquer política ELBSecurityPolicy-FS

  • ELBSecurityPolicy-TLS13-1-2-2021-06

  • ELBSecurityPolicy-TLS13-1-3-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Res-2021-06

Políticas de segurança do TLS 1.3

A tabela a seguir descreve a política recomendada (ELBSecurityPolicy-TLS13-1-2-2021-06) e as outras políticas do TLS 1.3. O prefixo ELBSecurityPolicy- foi removido dos nomes de política na linha de cabeçalho para que eles caibam no espaço.

Políticas de segurança 
                                            TLS13-1-2-2021-06*
                                        
                                            TLS13-1-3-2021-06
                                        
                                            TLS13-1-2-Res-2021-06
                                        
                                            TLS13-1-2-Ext2-2021-06
                                        
                                            TLS13-1-2-Ext1-2021-06
                                        
                                            TLS13-1-1-2021-06
                                        
                                            TLS13-1-0-2021-06
Protocolos TLS

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

Protocol-TLSv1.3
Cifras TLS
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

Para visualizar a configuração de uma política de segurança para seu load balancer usando a AWS CLI, use o comando describe-ssl-policies. A política padrão na AWS CLI é ELBSecurityPolicy-2016-08. Para atualizar para uma política de segurança TLS 1.3 usando a AWS CLI, use o parâmetro ssl-policy com os comandos create-listener e modify-listener.

Políticas compatíveis com FS

A tabela a seguir descreve a política padrão (ELBSecurityPolicy-2016-08, padrão na AWS CLI) e as políticas ELBSecurityPolicy-FS. O ELBSecurityPolicy- foi removido dos nomes de política na linha de cabeçalho para que se ajustem ao espaço.

Políticas de segurança 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2020-10
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-2-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-1-2019-08
                                        
                                            ELBSecurityPolicy-FS-2018-06
Protocolos TLS

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

Cifras TLS

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

Políticas de segurança de TLS

A tabela a seguir descreve a política padrão (ELBSecurityPolicy-2016-08, padrão na AWS CLI) e as políticas ELBSecurityPolicy-TLS. O ELBSecurityPolicy- foi removido dos nomes de política na linha de cabeçalho para que se ajustem ao espaço.

Políticas de segurança 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-TLS-1-2-Ext-2018-06
                                        
                                            ELBSecurityPolicy-TLS-1-2-2017-01
                                        
                                            ELBSecurityPolicy-TSL-1-1-2017-01
                                        
                                            ELBSecurityPolicy-TLS-1-0-2015-04
Protocolos TLS

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

Cifras TLS

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

DES-CBC3-SHA

* Não use essa política a menos que você precise oferecer suporte a um cliente legado que exija a cifra DES-CBC3-SHA, que é uma cifra fraca.

Para visualizar a configuração de uma política de segurança para seu Application Load Balancers usando a AWS CLI, use o comando describe-ssl-policies.

Adicionar um receptor HTTPS

Você configura um listener com um protocolo e uma porta para as conexões de clientes com o load balancer, e um grupo de destino para a regra do listener padrão. Para obter mais informações, consulte Configuração do listener.

Pré-requisitos
  • Para criar um listener HTTPS, você deverá especificar um certificado e uma política de segurança. O load balancer usará o certificado para encerrar a conexão e descriptografar solicitações dos clientes antes de roteá-las aos destinos. O load balancer usa a política de segurança ao negociar conexões SSL com os clientes.

  • Para adicionar uma ação de encaminhamento à regra do listener padrão, você deve especificar um grupo de destino disponível. Para obter mais informações, consulte Criar um grupo de destino.

  • Você pode especificar o mesmo grupo de destino em vários receptores, mas esses receptores devem pertencer ao mesmo balanceador de carga. Para usar um grupo de destino com um balanceador de carga, você deve verificar se ele não está sendo usado por um receptor para nenhum outro balanceador de carga.

New EC2 experience
Adicionar um listener HTTPS usando o console
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Load Balancers.

  3. Selecione o load balancer.

  4. Na guia Receptores e regras, escolha Adicionar receptor.

  5. Em Protocolo:Porta, escolha HTTPS e mantenha a porta padrão ou insira outra porta.

  6. (Opcional) Para habilitar a autenticação, em Autenticação, selecione Usar OpenID ou Amazon Cognito e forneça as informações solicitadas. Para obter mais informações, consulte Autenticar usuários usando um Application Load Balancer.

  7. Em Default actions (Ações padrão), siga um destes procedimentos:

    • Encaminhar para grupos de destino: escolha um ou mais grupos de destino para os quais deseja encaminhar o tráfego. Para adicionar grupos de destino, escolha Adicionar grupo de destino. Se estiver usando mais de um grupo de destino, selecione um peso para cada grupo de destino e revise o percentual associado. Se tiver habilitado a persistência em um ou mais dos grupos de destino, você deverá ativar a persistência no nível de grupo em uma regra.

    • Redirecionar para URL: especifique o URL para o qual as solicitações do cliente serão redirecionadas. É possível fazer isso inserindo cada parte separadamente na guia de Partes do URI ou inserindo o endereço completo na guia URL completo. Em Código de status, você pode configurar redirecionamentos como temporários (HTTP 302) ou permanentes (HTTP 301) com base em suas necessidades.

    • Retornar resposta fixa: especifique o código de resposta que será retornado às solicitações descartadas do cliente. Além disso, você pode especificar o tipo de conteúdo e o corpo da resposta, mas eles não são obrigatórios.

  8. Em Política de segurança, recomendamos que você sempre use a política de segurança predefinida mais recente.

  9. Para Certificado SSL/TLS padrão, as seguintes opções estão disponíveis:

    • Se você tiver criado ou importado um certificado usando o AWS Certificate Manager, selecione Do ACM e selecione o certificado em Selecionar um certificado.

    • Se você tiver importado um certificado usando IAM, selecione Do IAM e selecione seu certificado em Selecionar um certificado.

    • Se você tiver um certificado para importar, mas o ACM não estiver disponível na sua região, selecione Importar e selecione Para o IAM. Digite o nome do certificado no campo Nome do certificado. Em Chave privada do certificado, copie e cole o conteúdo do arquivo de chave privada (codificado por PEM). Em Corpo do certificado, copie e cole o conteúdo do arquivo do certificado de chave pública (codificado por PEM). Na Cadeia de certificados, copie e cole o conteúdo do arquivo da cadeia do certificado (codificado por PEM), exceto se estiver usando um certificado autoatribuído e se não for importante que os navegadores aceitem implicitamente o certificado.

  10. Escolha Add (Adicionar).

Old EC2 experience
Adicionar um listener HTTPS usando o console
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Load Balancers.

  3. Selecione o load balancer.

  4. Na guia Receptores, escolha Adicionar receptor.

  5. Em Protocolo:Porta, escolha HTTPS e mantenha a porta padrão ou insira outra porta.

  6. (Opcional) Para autenticar usuários, em Default actions (Ações padrão), escolha Add action (Adicionar ação), Authenticate (Autenticar) e forneça as informações solicitadas. Para obter mais informações, consulte Autenticar usuários usando um Application Load Balancer.

  7. Em Default actions (Ações padrão), siga um destes procedimentos:

    • Selecione Encaminhar e escolha um grupo de destino.

    • Escolha Redirecionar e forneça o URL e o código de status. Para obter mais informações, consulte Ações de redirecionamento.

    • Selecione Retornar resposta fixa e forneça um código de resposta, o provedor de identidade opcional e o texto de resposta opcional. Para obter mais informações, consulte Ações de resposta fixa.

  8. Em Política de segurança, recomendamos que você mantenha a política de segurança recomendada para o console.

  9. Em Certificado SSL/TLS padrão, execute uma das seguintes ações:

    • Se tiver criado ou importado um certificado usando o AWS Certificate Manager, escolha From ACM (Do ACM) e, em seguida, o certificado.

    • Se tiver carregado um certificado usando o IAM;, escolha Do IAM e, em seguida, o certificado.

  10. Escolha Add (Adicionar).

  11. (Opcional) Para definir outras regras do listener que encaminhem solicitações com base em um padrão de caminho ou em um nome de host, consulte Adicionar uma regra.

  12. (Opcional) Para adicionar uma lista de certificados para usar com o protocolo SNI, consulte Adicionar certificados à lista de certificados.

Para adicionar um listener HTTPS usando a AWS CLI

Use o comando create-listener para criar o listener e a regra padrão, e o comando create-rule para definir as regras de listener adicionais.

Atualizar um receptor HTTPS

Depois de criar um listener HTTPS, você pode substituir o certificado padrão, atualizar a lista de certificados ou substituir a política de segurança. Para obter mais informações, consulte Atualizar um receptor HTTPS para seu Application Load Balancer.