Por que recebo um erro de negociação SSL/TLS do cliente quando tento me conectar ao meu balanceador de carga?
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:
- Para Application Load Balancer e Network Load Balancer, execute o comando describe-listeners
- Para Classic Load Balancer, execute o comando describe-load-balancers
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:
- Políticas de segurança do Application Load Balancer
- Políticas de segurança do Network Load Balancer
- Políticas de segurança do Classic Load Balancer
(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:
- Atualize uma política de segurança do Application Load Balancer
- Atualize uma política de segurança do Network Load Balancer
- Atualize uma política de segurança do Classic Load Balancer
Vídeos relacionados
Conteúdo relevante
- Por que os clientes não conseguem se conectar ao meu balanceador de carga do Elastic Load Balancing?AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos