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.
Sumário
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)
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 aELBSecurityPolicy-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 |
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
| 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 |
|
|
|
|
|
|
|---|---|---|---|---|---|---|
| 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 |
|
|
|
|
|
|---|---|---|---|---|---|
| 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.
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.