Ir para o conteúdo

Por que recebo uma mensagem de erro de negociação SSL/TLS do cliente quando me conecto ao meu balanceador de carga?

6 minuto de leitura
0

Quero solucionar um erro de negociação SSL/TLS que ocorre quando me conecto ao meu Elastic Load Balancer (ELB).

Breve descrição

Esse erro ocorre quando o cliente não consegue negociar uma conexão segura com o balanceador de carga. O problema geralmente é causado por cifras ou versões de protocolo não compatíveis.

Para estabelecer uma conexão TLS, confirme se seu cliente oferece suporte a pelo menos uma cifra e um protocolo definidos na política de segurança do balanceador de carga.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Identifique a política de segurança do seu balanceador de carga

Para identificar a política de segurança do seu balanceador de carga, conclua as seguintes etapas:

  1. Abra o console do Amazon Elastic Compute Cloud (Amazon EC2).
  2. No painel de navegação, em Balanceamento de carga, clique em Balanceadores de carga.
  3. Selecione o balanceador de carga e clique em Receptores.
  4. Veja a política de segurança.
    Para Application Load Balancers e Network Load Balancers, encontre a política de segurança na coluna Política de segurança.
    Para Classic Load Balancer, clique em Alterar na coluna Cifra para visualizar a política de segurança.

Para usar a AWS CLI, execute um dos seguintes comandos:

Identifique os protocolos e cifras compatíveis

Os Classic Load Balancer oferecem suporte a políticas de segurança personalizadas. No entanto, os Application Load Balancers e Network Load Balancers não oferecem suporte a políticas de segurança personalizadas.

Para obter mais informações sobre políticas de segurança, consulte os seguintes artigos:

(Opcional) Teste a política de segurança do seu balanceador de carga

Teste os protocolos e cifras compatíveis com a política de segurança do seu balanceador de carga. Use uma ferramenta de linha de comandos de código aberto, como sslscan ou openssl.

Para obter mais informações, consulte sslscan no site do GitHub.

Use o comando sslscan

Instale e execute o comando sslscan em uma instância do Amazon Linux EC2 ou em seu sistema local. Certifique-se de que seu balanceador de carga aceite conexões TLS do seu endereço IP de origem.

Para usar o sslscan em uma instância do Amazon Linux EC2, conclua as seguintes etapas:

  1. Ative o repositório Extra Packages for Enterprise Linux (EPEL).

  2. Execute o seguinte comando:

    sudo yum install sslscan
  3. Execute o comando a seguir para verificar se há cifras compatíveis em seu balanceador de carga. Substitua exemplo.com pelo seu nome de domínio:

    [ec2-user@ ~]$ sslscan --show-ciphers example.com

    Observação: o Amazon Linux 2023 (AL2023) não é compatível com o EPEL.

Use o comando openssl

Para testar a política de segurança do seu balanceador de carga, também é possível usar o comando openssl. Execute o comando openssl em uma instância do Amazon Linux EC2 ou em seu sistema local.

Para listar as cifras compatíveis com uma versão específica de SSL/TLS, execute o seguinte comando:

*$* openssl ciphers -v

O comando a seguir mostra as cifras compatíveis com o TLS versão TLS 1.2:

*$* openssl ciphers -V | grep "TLSv1.2"

Execute o comando s_client para testar versões TLS e suítes de cifras. Para descobrir a força de uma suíte de cifras específica, use um repositório de sites de terceiros, como o TLS Ciphersuite Search. Por exemplo, se você executou o comando a seguir, a saída mostrará cifras para www.example.com:

openssl s_client -connect example.com:443

A suíte TLS_PSK_WITH_AES_128_CBC_SHA é fraca. Se você usar a suíte em um servidor, receberá a seguinte mensagem de erro:

openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet
140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:

A suíte ECDHE-RSA-AES128-GCM-SHA256 é forte. Se a suíte for usada no servidor, você recebe uma mensagem de sucesso semelhante à seguinte:

openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD
Session-ID-ctx:
Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1647375807
Timeout : 300 (sec)
Verify return code: 0 (ok)

Também é possível usar o comando openssl para especificar a versão do protocolo TLS usado na conexão. O exemplo a seguir mostra um teste que verifica se o TLS 1.1 é compatível com o servidor:

openssl s_client -connect example.com:443 -tls1_1 -quiet
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2
verify return:1
depth=0 CN = *.peg.a2z.com
verify return:1

(Opcional) Verifique os logs de conexão do seu Application Load Balancer e os logs de acesso do seu Network Load Balancer

Se seu cliente conectar receptores HTTPS ao seu Application Load Balancer, use os logs de conexão para verificar o protocolo e a cifra. O protocolo e a cifra usados na conexão estão nos campos tls_protocol e tls_cipher. Se a negociação de TLS falhar, o campo tls_verify_status será definido como Failed:$error_code, e os campos tls_protocol e tls_cipher serão definidos como "-".

Se seu cliente conectar receptores TLS ao seu Network Load Balancer, use os logs de acesso para verificar o protocolo e a cifra. O protocolo e a cifra usados na conexão estão nos campos tls_protocol_version e tls_cipher. Se a negociação de TLS falhar, nenhum log de acesso será registrado.

Para obter mais informações, consulte Logs de conexão para o Application Load Balancer e Logs de acesso do Network Load Balancer.

Atualize a política de segurança do seu balanceador de carga

Para usar protocolos ou cifras compatíveis para aumentar sua segurança, atualize a política de segurança do seu balanceador de carga. Para obter mais informações sobre como atualizar as políticas de segurança, consulte os seguintes artigos:

AWS OFICIALAtualizada há um ano