Como identifico e resolvo problemas de conexão do cliente quando uso o mTLS com um Application Load Balancer?
Quero resolver os problemas de conexão do cliente que recebo quando uso a Segurança da camada de transporte mútua (mutual Transport Layer Security, mTLS) com um Application Load Balancer.
Breve descrição
Para investigar problemas de conexão do cliente, você deve ativar os logs de conexão no seu Application Load Balancer. Use os logs de conexão para analisar padrões de solicitação e solucionar problemas.
Para obter mais informações sobre quais informações os logs de conexão fornecem, consulte Monitorar seus Application Load Balancers.
Resolução
Os logs de conexão do Application Load Balancer identificam os erros que você recebeu quando o cliente tentou se conectar ao Application Load Balancer.
Observação: para obter mais informações sobre as formas de processar os erros, consulte Processamento dos arquivos de log de conexão.
Filtre os logs de conexão para visualizar erros específicos
Filtre os logs de conexão pelo endereço IP do cliente para procurar erros.
-
Execute o comando a seguir para procurar solicitações com falha:
zcat *.log.gz | awk '($2 == "a.a.a.a" && $11 ~ "Failed")' | awk '{print $1, $5, $6, $8, $9, $10, $11, $12}'Observação: substitua a.a.a.a pelo endereço IP do cliente que você está investigando em busca de erros.
Exemplo de saída:
2024-04-05T18:31:29.268987Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired" 2024-04-05T19:29:35.128387Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired" 2024-04-05T20:16:44.387952Z TLSv1.3 ECDHE-RSA-AES256-SHA "CN=client-expired.alb-mtls-example.com,OU=IT,O=Company LLC,L=City,ST=State,C=US" NotBefore=2024-01-02T19:17:20Z;NotAfter=2024-04-02T19:17:20Z 02 "Failed:ClientCertExpired" -
Obtenha o código de erro no campo tls_verify_status.
-
Consulte os códigos do motivo do erro para identificar o erro.
-
Use as seções a seguir para resolver o erro específico.
Erro: "ClientCertCrlHit"
Esse erro ocorre quando o certificado do cliente existe na lista de revogação de certificados (certificate revocation list, CRL) usada pelo receptor mTLS.
- Examine a entrada do log de conexão que mostra o campo leaf_client_cert_subject.
- Baixe o arquivo CRL do bucket do Amazon Simple Storage Service (Amazon S3). O arquivo CRL é referenciado pelo armazenamento confiável do Amazon Elastic Compute Cloud (Amazon EC2).
- Examine a CRL do certificado do cliente que foi identificado na entrada do log.
- Renove o certificado do cliente com base no pacote de CA usado pelo armazenamento confiável do EC2. Tente novamente realizar a conexão usando o novo certificado não revogado.
Erro: "ClientCertCrlProcessingError"
Esse erro ocorre quando a lista de revogação de certificado (CRL) apresenta um erro de processamento.
Para resolver esse erro, siga estas etapas:
- Documente o carimbo de data/hora associado ao erro nos logs de conexão.
- Confirme se o certificado do cliente atende aos requisitos definidos.
- Certifique-se de que a CRL configurada não esteja excedendo as cotas definidas.
Se você continuar recebendo o erro, entre em contato com o AWS Support para obter uma análise mais aprofundada. Forneça as seguintes informações ao engenheiro do AWS Support:
-
Saída do seguinte comando curl:
curl -vvv -X HTTP_action --cert client-cert.crt --key client_key.pem https://alb.fqdn.com -A credstestObservação: substitua HTTP_action pela sua ação HTTP, client-cert.crt pelo nome do seu arquivo de certificado e client_key.pem pelo nome do seu arquivo de chave.
-
Certificado de cliente (não forneça o arquivo de chave)
-
Logs de conexão do período em que o problema ocorreu
Erro: "ClientCertExpired"
Esse erro ocorre quando o certificado do cliente expira.
Para resolver esse erro, siga estas etapas:
-
Verifique o período de validade do certificado. É possível encontrar esse valor no campo leaf_client_cert_validity do log de conexão.
-
Execute o seguinte comando no arquivo de certificado:
openssl x509 -in $i --text | grep -A 2 "Validity" -
Compare o Não após a data fornecido na etapa 2 com o campo de carimbo de data/hora do log de conexão.
Observação: certifique-se de que o certificado do cliente seja usado somente antes do Não após a data. -
Para resolver esse erro, use o pacote de certificado CA referenciado pelo armazenamento confiável do EC2 para reemitir o certificado do cliente.
Erro: "ClientCertInvalid"
Esse erro ocorre porque o certificado do cliente não é válido.
Para resolver esse erro, siga estas etapas:
- Verifique se o certificado do cliente atende aos requisitos para que possa ser usado com o mTLS e o Application Load Balancer.
- Reemita o certificado.
Erro: "ClientCertMaxChainDepthExceeded"
Esse erro ocorre porque o número de certificados de cliente excedeu a profundidade máxima da cadeia.
Para resolver esse erro, siga estas etapas:
-
Confirme o número de certificados no certificado do cliente que é apresentado ao Application Load Balancer.
-
Para examinar a profundidade da cadeia de certificados, use qualquer uma das seguintes opções:
Windows: selecione o certificado e selecione Caminho do certificado. Em seguida, conte os certificados.
-ou-
Execute o seguinte comando no Microsoft PowerShell e conte os certificados:certutil -dump client-cert.crtObservação: substitua client-cert.crt pelo nome do seu arquivo de certificado.
Linux ou Unix: para contar os certificados, execute o seguinte comando:
openssl crl2pkcs7 -nocrl -certfile client-cert.crt | openssl pkcs7 -print_certs -noout | grep "subject" | wc -lObservação: substitua client-cert.crt pelo nome do seu arquivo de certificado.
-
Reduza o número de certificados presentes na cadeia de certificados do cliente. Para obter mais informações sobre a profundidade máxima da cadeia de certificados suportada, consulte Cotas para seus Application Load Balancers.
Erro: "ClientCertMaxSizeExceeded"
Esse erro ocorre porque o tamanho máximo do certificado do cliente foi excedido.
Para resolver esse erro, siga estas etapas:
- Verifique o tamanho do certificado do cliente:
Windows Selecione o arquivo. Em seguida, selecione as propriedades e visualize o tamanho do arquivo.
Linux Execute o arquivo du -h.
Observação: substitua file pelo nome do seu arquivo.
Macintosh Selecione o item no Finder e pressione Command-I. - Reduza o tamanho do arquivo de certificado do cliente apresentado ao Application Load Balancer. Para obter mais informações sobre o tamanho máximo do certificado suportado, consulte Cotas para seus Application Load Balancers.
Erro: "ClientCertNotYetValid"
Esse erro ocorre porque o certificado do cliente ainda não é válido.
Para resolver esse erro, siga estas etapas:
-
Verifique o período de validade do certificado. É possível encontrar esse valor no campo leaf_client_cert_validity do log de conexão.
-
Execute o seguinte comando no arquivo de certificado:
openssl x509 -in $i --text | grep -A 2 "Validity" -
Compare o Não antes da data fornecido na etapa 2 com o campo de carimbo de data/hora do log de conexão.
Observação: certifique-se de que o certificado do cliente seja usado somente após o Não antes da data. -
Para resolver esse erro, use o pacote de certificado CA referenciado pelo armazenamento confiável do EC2 para reemitir o certificado do cliente.
Erro: "ClientCertPurposeInvalid"
Esse erro ocorre porque o certificado do cliente não tem o Uso de chave estendida (Extended Key Usage, EKU) "Autenticação de cliente TLS Web".
Para resolver esse erro, siga estas etapas:
-
Emita um novo certificado de cliente com o EKU clientAuth e tente novamente.
-
Para validar, execute o seguinte comando:
openssl x509 -in client-cert.crt --text | grep -A 1 "X509v3 Extended Key Usage:"Observação: substitua client-cert.crt pelo nome do seu arquivo de certificado.
-
Verifique a opção "Autenticação de cliente TLS Web" na lista.
Erro: "ClientCertRejected"
Esse erro ocorre porque o certificado do cliente é rejeitado pela validação personalizada do servidor.
Para resolver esse erro, siga estas etapas:
- Verifique se o receptor do Application Load Balancer usa mTLS no modo Passagem ou Verificar.
No modo de Passagem, o balanceador de carga usa cabeçalhos HTTP para enviar o certificado e a cadeia do cliente ao destino para verificação. Você recebe esse erro quando o destino rejeita o certificado do cliente. - Examine os logs da aplicação no destino para identificar a causa do erro.
- Como prática recomendada, use o modo Verificar em vez do modo Passagem no receptor mTLS.
Erro: "ClientCertTypeUnsupported"
Esse erro ocorre porque o Application Load Balancer não oferece suporte a pelo menos um dos certificados na cadeia fornecida pelo cliente. O certificado usa uma versão do certificado X509, tamanho de chave, algoritmo de chave ou algoritmo de assinatura não compatível.
Para resolver esse erro, siga estas etapas:
-
Execute o seguinte comando na cadeia de certificados do cliente:
openssl x509 -in client-cert.crt —textObservação: substitua client-cert.crt pelo nome do seu arquivo de certificado.
-
Verifique se todos os certificados da cadeia estão em conformidade com os requisitos de certificados.
Erro: "ClientCertUntrusted"
Esse erro ocorre porque o certificado do cliente não é confiável.
Para resolver esse erro, siga estas etapas:
-
Verifique se o nome do certificado no campo leaf_client_cert_subject foi emitido pela autoridade de certificação (CA) presente no armazenamento confiável configurado do EC2.
Observação: se o emissor do certificado do cliente não estiver presente no pacote de certificado CA usado pelo armazenamento confiável do EC2, o mTLS não funcionará. -
Execute o seguinte comando no certificado do cliente:
openssl crl2pkcs7 -nocrl -certfile client-cert.crt | openssl pkcs7 -print_certs -noout | grep -e 'issuer' -e 'subject' | sed -e 's/subject._CN = /Subject: /; s/issuer._CN = /Issuer: /'"Observação: substitua client-cert.crt pelo nome do seu arquivo de certificado.
-
Para recuperar os assuntos presentes no pacote, execute o seguinte comando no pacote de certificado CA usado pelo armazenamento confiável do EC2:
openssl crl2pkcs7 -nocrl -certfile client-cert.crt | openssl pkcs7 -print_certs -noout | grep -e 'subject' | sed -e 's/subject.*CN = /Subject: /'Observação: substitua client-cert.crt pelo nome do seu arquivo de pacote de certificado.
Erro: "UnmappedConnectionError"
Esse erro ocorre quando a conexão de runtime não consegue ser mapeada.
Entre em contato com o AWS Support para obter uma análise mais aprofundada. Forneça as seguintes informações ao engenheiro do AWS Support:
-
Saída do seguinte comando curl:
curl -vvv -X HTTP_action --cert client-cert.crt --key client_key.pem https://alb.fqdn.com -A credstestObservação: substitua HTTP_action pelo nome da sua ação HTTP, client-cert.crt pelo nome do seu arquivo de certificado e client_key.pem pelo nome do seu arquivo de chave.
-
Certificado de cliente (não forneça o arquivo de chave)
-
Logs de conexão do período em que o problema ocorreu
Informações relacionadas
Como uso o Athena para consultar meus logs de conexão do Application Load Balancer?
Introducing mTLS for Application Load Balancer (Apresentando o mTLS para o Application Load Balancer)
How do I investigate issues related to the CA bundle for mTLS listeners on the Application Load Balancer? (Como faço para investigar problemas relacionados ao pacote CA em receptores mTLS no Application Load Balancer?)
- Idioma
- Português

Conteúdo relevante
feita há um ano
AWS OFICIALAtualizada há 9 meses