Partilhar via


Solução de problemas de erros de autenticação mútua no Application Gateway

Saiba como solucionar problemas com autenticação mútua ao usar o Application Gateway.

Visão geral

Para autenticação mútua em um Application Gateway, vários erros podem ocorrer durante a validação do certificado do cliente após a configuração. As causas comuns para esses erros incluem:

  • Carregar um certificado ou cadeia de certificados sem incluir um certificado de CA raiz
  • Carregar uma cadeia de certificados com vários certificados de CA raiz
  • Carregar uma cadeia de certificados que contém apenas um certificado final sem certificado de CA
  • Erros de validação de certificado devido a discordância de Nome Distinguido (DN) do emissor
  • Atributos EKU (Extended Key Usage) ausentes ou incorretos

Este guia abrange diferentes cenários que você pode encontrar e fornece etapas de solução de problemas para cada um. Também abordamos códigos de erro específicos e explicamos suas causas prováveis em cenários de autenticação mútua. Todas as falhas de autenticação de certificado de cliente resultam em um código de status HTTP 400 (Solicitação incorreta) sendo retornado ao cliente.

Solução de problemas de cenário - problemas de configuração

Os cenários a seguir abordam problemas de configuração comuns que podem ocorrer ao configurar a autenticação mútua. Cada cenário inclui a descrição do problema e a solução recomendada.

Certificado autoassinado

Problema

O certificado de cliente que você carregou é um certificado autoassinado e está resultando no código de erro ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate.

Solução

Verifique se o certificado autoassinado que você está usando inclui a extensão BasicConstraintsOid com o valor "2.5.29.19" e o sinalizador CA definido como TRUE. Essa extensão indica que o assunto do certificado pode atuar como uma Autoridade de Certificação.

Para verificar as propriedades do certificado, você pode usar o seguinte comando OpenSSL:

openssl x509 -in certificate.pem -text -noout

Procure por a seção "Restrições básicas" na saída, que deve mostrar "CA:TRUE" para um certificado CA válido. Para obter orientações detalhadas sobre como gerar certificados de cliente autoassinados, consulte Certificados de cliente confiáveis.

Solução de problemas de cenário - problemas de conectividade

Talvez você consiga configurar a autenticação mútua sem problemas, mas está tendo problemas ao enviar solicitações para o Application Gateway. Abordamos alguns problemas e soluções comuns na seção a seguir. Você pode encontrar a propriedade sslClientVerify nos logs de acesso do seu Application Gateway.

SslClientVerify é NONE

Problema

A propriedade sslClientVerify aparece como "NONE" em seus logs de acesso, indicando que nenhum certificado de cliente foi apresentado durante o handshake TLS.

Solução

Esse problema ocorre quando o cliente não envia um certificado de cliente na solicitação de handshake TLS para o Application Gateway. Este problema pode acontecer quando:

  • O aplicativo cliente não está configurado para usar certificados de cliente
  • O certificado do cliente não está instalado ou acessível corretamente
  • O cliente não confia no certificado do servidor do Application Gateway

Para verificar se a autenticação do cliente está configurada corretamente no Application Gateway, use o seguinte comando OpenSSL:

openssl s_client -connect <hostname:port> -cert <path-to-certificate> -key <client-private-key-file> 

Onde:

  • -cert Especifica o caminho para o certificado do cliente (certificado final)
  • -key Especifica o caminho para o arquivo de chave privada do cliente
  • -verify_return_error garante que o comando falha se a verificação do certificado falhar

Para obter mais informações sobre como usar o comando OpenSSL s_client , consulte a página de manual do OpenSSL.

SslClientVerify é FAILED

Problema

A propriedade sslClientVerify aparece como "FAILED" em seus logs de acesso, indicando que a validação do certificado do cliente falhou durante o handshake TLS.

Solução

Há muitas causas potenciais para falhas nos logs de acesso. Aqui está uma lista de causas comuns para falhas:

  • Não é possível obter o certificado do emissor: Não foi possível encontrar o certificado do emissor do certificado do cliente. Esse problema normalmente significa que a cadeia de certificados de CA do cliente confiável não está completa no Application Gateway. Valide se a cadeia de certificados de CA de cliente confiável carregada no Application Gateway está concluída.
  • Não é possível obter o certificado de emissor local: Semelhante a não conseguir obter o certificado do emissor, o certificado do emissor do cliente não pôde ser encontrado. Esse problema normalmente significa que a cadeia de certificados de CA do cliente confiável não está completa no Application Gateway. Valide se a cadeia de certificados CA de cliente fidedigna carregada no Application Gateway está completa.
  • Não é possível verificar o primeiro certificado: Não é possível verificar o certificado do cliente. Este erro ocorre especificamente quando o cliente apresenta apenas o certificado folha, cujo emissor não é confiável. Valide se a cadeia de certificados CA de cliente fidedigna carregada no Application Gateway está completa.
  • Não é possível verificar o emissor do certificado do cliente: Este erro ocorre quando a configuração VerifyClientCertIssuerDN está definida como true. Esse erro geralmente acontece quando o DN do emissor do certificado do cliente não corresponde ao ClientCertificateIssuerDN extraído da cadeia de certificados de CA do cliente confiável carregada pelo cliente. Para obter mais informações sobre como o Application Gateway extrai o ClientCertificateIssuerDN, confira Application Gateway extraindo DN do emissor. Como prática recomendada, certifique-se de que está carregando uma cadeia de certificados por arquivo no Application Gateway.
  • Finalidade do certificado não suportada: Verifique se o certificado do cliente designa uso estendido de chaves para autenticação de cliente (1.3.6.1.5.5.7.3.2). Pode encontrar mais detalhes sobre a definição de utilização alargada de chaves e identificador de objetos para autenticação de cliente em RFC 3280 e RFC 5280.

Para obter mais informações sobre como extrair toda a cadeia de certificados de cliente fidedignos da AC a carregar para o Gateway de Aplicação, veja Como extrair cadeias de certificados de cliente fidedignos da AC.

Solução de problemas de código de erro

Os códigos de erro a seguir aparecem ao configurar a autenticação mútua. Cada erro inclui a causa provável e a solução recomendada.

Código de erro: ApplicationGatewayTrustedClientCertificateMustSpecifyData

Motivo

O arquivo de certificado carregado está faltando dados de certificado ou contém um arquivo vazio sem conteúdo de certificado válido.

Solução

Verifique se o arquivo de certificado contém dados de certificado válidos no formato correto (PEM). Use um editor de texto para confirmar se o ficheiro contém conteúdo de certificado entre os delimitadores -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----.

Código de erro: ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey

Motivo

Há uma chave privada na cadeia de certificados. Não deve haver uma chave privada na cadeia de certificados.

Solução

Verifique novamente a cadeia de certificados que foi carregada e remova a chave privada que fazia parte da cadeia. Recarregue a cadeia sem a chave privada.

Código de erro: ApplicationGatewayTrustedClientCertificateInvalidData

Motivo

Há duas causas potenciais para esse erro:

  • Falha de análise: A cadeia de certificados não está no formato correto. O Application Gateway espera cadeias de certificados no formato PEM com certificados individuais devidamente delimitados.
  • Conteúdo vazio: O arquivo carregado contém apenas delimitadores sem dados de certificado reais entre eles.

Solução

Com base na causa específica, aplique uma das seguintes soluções:

  • Problema de formato: Verifique se a cadeia de certificados está no formato PEM com cada certificado devidamente delimitado por -----BEGIN CERTIFICATE----- e -----END CERTIFICATE----- marcadores. Cada certificado deve figurar em linhas separadas dentro destes delimitadores.
  • Dados em falta: Verifique se o arquivo de certificado contém dados reais do certificado entre os delimitadores, não apenas delimitadores vazios.

Código de Erro: ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate

Motivo

O certificado carregado continha apenas um certificado de folha sem um certificado CA. Carregar uma cadeia de certificados que contenha certificados de CA e um certificado intermediário é aceitável, pois o certificado intermediário seria simplesmente ignorado, mas é necessário que a cadeia inclua uma CA.

Solução

Verifique se a cadeia de certificados inclui pelo menos um certificado de autoridade de certificação com a extensão BasicConstraintsOid adequada (OID: 2.5.29.19) onde o sinalizador da autoridade de certificação está definido como TRUE. Essa extensão indica que o assunto do certificado pode atuar como uma Autoridade de Certificação.

Para verificar o status da autoridade de certificação de um certificado, use:

openssl x509 -in certificate.pem -text -noout | grep -A 2 "Basic Constraints"

A saída deve mostrar "CA:TRUE" para certificados de CA válidos.

Código de erro: ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate

Motivo

A cadeia de certificados continha vários certificados de autoridade de certificação raiz ou não continha nenhuns certificados de autoridade de certificação raiz.

Solução

Os certificados carregados devem conter exatamente um certificado de autoridade de certificação raiz (e quantos certificados de autoridade de certificação intermediários, conforme necessário).