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.
Descrição geral
Depois de configurar a autenticação mútua em um Gateway de Aplicativo, pode haver vários erros que aparecem ao tentar usar a autenticação mútua. Algumas causas comuns para erros incluem:
- Carregou um certificado ou cadeia de certificados sem um certificado de autoridade de certificação raiz
- Carregou uma cadeia de certificados com vários certificados de autoridade de certificação raiz
- Carregou uma cadeia de certificados que continha apenas um certificado folha sem um certificado de autoridade de certificação
- Erros de validação devido a incompatibilidade de DN do emissor
Analisaremos os diferentes cenários em que você pode se deparar e como solucionar esses cenários. Em seguida, abordaremos os códigos de erro e explicaremos as causas prováveis para determinados códigos de erro que você pode estar vendo com a autenticação mútua. Todas as falhas de autenticação de certificado de cliente devem resultar em um código de erro HTTP 400.
Solução de problemas de cenário - problemas de configuração
Há alguns cenários que você pode estar enfrentando ao tentar configurar a autenticação mútua. Vamos explicar como solucionar algumas das armadilhas mais comuns.
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 tem a extensão BasicConstraintsOid = "2.5.29.19", o que indica que o assunto pode agir como uma autoridade de certificação. Isso garantirá que o certificado usado seja um certificado de autoridade de certificação. Para obter mais informações sobre como gerar certificados de cliente autoassinados, confira certificados de cliente confiáveis.
Solução de problemas de cenário - problemas de conectividade
Talvez você tenha conseguido configurar a autenticação mútua sem problemas, mas está tendo problemas ao enviar solicitações para o seu 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 está aparecendo como "NONE" em seus logs de acesso.
Solução
Esta situação é vista quando o cliente não envia um certificado de cliente ao enviar um pedido ao Gateway de Aplicação. Tal poderá ocorrer se o cliente que envia o pedido para o Gateway de Aplicação não estiver configurado corretamente para utilizar certificados de cliente. Uma maneira de verificar se a configuração de autenticação do cliente no Application Gateway está funcionando conforme o esperado é através do seguinte comando OpenSSL:
openssl s_client -connect <hostname:port> -cert <path-to-certificate> -key <client-private-key-file>
O -cert
sinalizador é o certificado folha, o sinalizador é o -key
arquivo de chave privada do cliente.
Para obter mais informações sobre como usar o comando OpenSSL s_client
, consulte a página de manual.
SslClientVerify é FAILED
Problema
A propriedade sslClientVerify está aparecendo como "FAILED" em seus logs de acesso.
Solução
Há várias causas potenciais para falhas nos logs de acesso. Abaixo está uma lista de causas comuns para o fracasso:
- Não foi possível obter o certificado do emissor: Não foi possível encontrar o certificado do emissor do certificado do cliente. E, normalmente, significa que a cadeia de certificados de cliente fidedignos da AC não está concluída no Gateway de Aplicação. Valide se a cadeia de certificados de CA de cliente confiável carregada no Application Gateway está concluída.
- Não foi possível obter o certificado do emissor local: Semelhante ao impossibilidade de obter o certificado do emissor, o certificado do emissor do certificado do cliente não pôde ser encontrado. E, normalmente, significa que a cadeia de certificados de cliente fidedignos da AC não está concluída no Gateway de Aplicação. Valide se a cadeia de certificados de CA de cliente confiável carregada no Application Gateway está concluída.
- 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 de folha, cujo emissor não é fidedigno. Valide se a cadeia de certificados de CA de cliente confiável carregada no Application Gateway está concluída.
- Não é possível verificar o emissor do certificado do cliente: este erro ocorre quando a configuração VerifyClientCertIssuerDN está definida como true. Isso normalmente 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 sem suporte: verifique se o certificado do cliente designa o Uso Estendido de Chave 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
Se você estiver vendo qualquer um dos códigos de erro a seguir, temos algumas soluções recomendadas para ajudar a resolver o problema que você pode estar enfrentando.
Código de erro: ApplicationGatewayTrustedClientCertificateMustSpecifyData
Causa
Há dados de certificado que estão faltando. O certificado carregado poderia ter sido um arquivo vazio sem quaisquer dados do certificado.
Solução
Valide se o arquivo de certificado carregado não tem nenhum dado ausente.
Código de erro: ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey
Causa
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
Causa
Há duas causas potenciais por trás desse código de erro.
- A análise falhou devido à cadeia não ser apresentada no formato correto. O Application Gateway espera que uma cadeia de certificados esteja no formato PEM e também espera que os dados de certificados individuais sejam delimitados.
- O analisador não encontrou nada para analisar. O arquivo carregado poderia potencialmente ter apenas os delimitadores, mas nenhum dado de certificado.
Solução
Dependendo da causa deste erro, existem duas soluções potenciais.
- Valide se a cadeia de certificados carregada estava no formato correto (PEM) e se os dados do certificado foram delimitados corretamente.
- Verifique se o arquivo de certificado carregado continha os dados do certificado, além dos delimitadores.
Código de erro: ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate
Causa
O certificado carregado continha apenas um certificado folha sem um certificado de autoridade de certificação. Carregar uma cadeia de certificados com certificados de autoridade de certificação e um certificado folha é aceitável, pois o certificado folha seria simplesmente ignorado, mas um certificado deve ter uma autoridade de certificação.
Solução
Verifique se a cadeia de certificados que foi carregada continha mais do que apenas o certificado de folha. A extensão BasicConstraintsOid = "2.5.29.19" deve estar presente e indicar que o sujeito pode agir como uma autoridade de certificação.
Código de erro: ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate
Causa
A cadeia de certificados continha vários certificados de autoridade de certificação raiz ou continha certificados de autoridade de certificação raiz zero.
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).