Por que recebo um erro de negociação SSL/TLS do cliente quando tento me conectar ao meu balanceador de carga?

5 minuto de leitura
0

Recebo um erro de negociação Secure Sockets Layer (SSL)/Transport Layer Security (TLS) quando tento me conectar ao meu balanceador de carga. Por que estou recebendo esse erro?

Breve descrição

Um erro de negociação TLS do cliente significa que uma conexão TLS iniciada pelo cliente não conseguiu estabelecer uma sessão com o balanceador de carga. Os erros de negociação de TLS ocorrem quando os clientes tentam se conectar a um balanceador de carga usando um protocolo ou cifra que a política de segurança do balanceador de carga não suporta. Para estabelecer uma conexão TLS, certifique-se de que seu cliente ofereça suporte ao seguinte:

  • Uma ou mais cifras correspondentes
  • Um protocolo especificado na política de segurança

Resolução

Observação: se houver algum erro ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se você estar usando a versão mais recente da AWS CLI.

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

No Console de Gerenciamento da AWS:

1.    Abra o console do Amazon Elastic Compute Cloud (Amazon EC2).

2.    No painel de navegação, em BALANCEAMENTO DE CARGA escolha Balanceadores de carga.

3.    Selecione o balanceador de carga e escolha 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, escolha Alterar na coluna Cifra para visualizar a política de segurança.

Do AWS CLI:

Determine quais protocolos e cifras são compatíveis com a política de segurança do seu balanceador de carga

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, incluindo a política de segurança padrão, consulte o seguinte:

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

Para testar os protocolos e as cifras compatíveis com a política de segurança do balanceador de carga, use uma ferramenta de linha de comando de código aberto, como sslscan.

Como usar o comando sslscan

Você pode instalar e executar o comando sslscan em qualquer instância Linux do Amazon EC2 ou do seu sistema local. Verifique se o balanceador de carga que você deseja testar aceita conexões TLS do seu endereço IP de origem. Para usar o sslscan em uma instância do Amazon Linux EC2:

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

2.    Execute o comando sudo yum install sslscan.

3.    Execute o comando a seguir para verificar se há cifras compatíveis em seu balanceador de carga. Substitua example.com pelo seu nome de domínio.

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

Como usar o comando openssl

Alternativamente, você também pode testar a política de segurança do balanceador de carga usando o comando openssl. Execute o comando openssl em qualquer instância Linux do Amazon EC2 ou em seu sistema local.

Para listar as cifras suportadas para uma versão específica de SSL/TLS, use o comando openssl ciphers:

*$* openssl ciphers -v

Por exemplo, o comando a seguir mostraria as cifras suportadas pela versão TLS TLSv1.2:

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

Use o comando s_client para testar versões TLS e conjuntos de cifras. Para descobrir a força de determinados conjuntos de cifras, você pode usar um repositório de sites, como ciphersuites.info. Por exemplo, o comando a seguir mostraria cifras para www.example.com:

openssl s_client -connect example.com:443

Por exemplo, a suíte TLS_PSK_WITH_AES_128_CBC_SHA é considerada fraca. Se você usar a suíte em um servidor, receberá o seguinte 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 é considerada forte. Se a suíte for usada no servidor, você receberá 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)

Você também pode 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 é suportado pelo 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

Atualize a política de segurança do balanceador de carga, se necessário

Para atualizar a política de segurança do balanceador de carga para usar protocolos ou cifras compatíveis e atingir o nível de segurança desejado, execute as seguintes ações:


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos