Partager via


Résolution des erreurs d’authentification mutuelle dans Application Gateway

Découvrez comment résoudre les problèmes liés à l’authentification mutuelle lors de l’utilisation d’Application Gateway.

Aperçu

Pour l’authentification mutuelle sur une passerelle Application Gateway, différentes erreurs peuvent se produire lors de la validation du certificat client après la configuration. Les causes courantes de ces erreurs sont les suivantes :

  • Charger un certificat ou une chaîne de certificats, sans inclure le certificat de l'autorité de certification racine
  • Charger une chaîne de certificats avec plusieurs certificats d’autorité de certification racine
  • Charger une chaîne de certificats qui contient uniquement un certificat terminal sans certificat d’autorité de certification
  • Erreurs de validation de certificat en raison d’une incompatibilité de nom unique (DN) de l’émetteur
  • Attributs EKU (Extended Key Usage) manquants ou incorrects

Ce guide couvre différents scénarios que vous pouvez rencontrer et fournit des étapes de résolution des problèmes pour chacun d’eux. Nous abordons également des codes d’erreur spécifiques et expliquer leurs causes probables dans les scénarios d’authentification mutuelle. Tous les échecs d’authentification par certificat client entraînent un code d’état HTTP 400 (Demande incorrecte) retourné au client.

Résolution des problèmes de scénario - Problèmes de configuration

Les scénarios suivants résolvent les problèmes de configuration courants qui peuvent se produire lors de la configuration de l’authentification mutuelle. Chaque scénario inclut la description du problème et la solution recommandée.

Certificat auto-signé

Problème

Le certificat client que vous avez chargé est un certificat auto-signé et génère le code d’erreur ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate.

Solution

Vérifiez que le certificat auto-signé que vous utilisez inclut l’extension BasicConstraintsOid avec la valeur « 2.5.29.19 » et l’indicateur d’autorité de certification défini sur TRUE. Cette extension indique que le sujet du certificat peut agir en tant qu’autorité de certification.

Pour vérifier les propriétés du certificat, vous pouvez utiliser la commande OpenSSL suivante :

openssl x509 -in certificate.pem -text -noout

Recherchez la section « Contraintes de base » dans la sortie, qui doit afficher « CA :TRUE » pour un certificat d’autorité de certification valide. Pour obtenir des instructions détaillées sur la génération de certificats clients auto-signés, consultez les certificats clients approuvés.

Résolution des problèmes de scénario - Problèmes de connectivité

Vous pouvez peut-être configurer l’authentification mutuelle sans aucun problème, mais vous rencontrez des problèmes lors de l’envoi de requêtes à votre application Gateway. Nous abordons certains problèmes courants et solutions dans la section suivante. Vous trouverez la propriété sslClientVerify dans les journaux d’accès de votre application Gateway.

SslClientVerify indique NONE

Problème

La propriété sslClientVerify apparaît sous la forme « NONE » dans vos journaux d’accès, indiquant qu’aucun certificat client n’a été présenté lors de l’établissement d’une liaison TLS.

Solution

Ce problème se produit lorsque le client n’envoie pas de certificat client dans la requête de négociation TLS à la passerelle d’application. Ce problème peut se produire quand :

  • L’application cliente n’est pas configurée pour utiliser des certificats clients
  • Le certificat client n’est pas correctement installé ou accessible
  • Le client n’approuve pas le certificat de serveur d’Application Gateway

Pour vérifier que l’authentification du client est correctement configurée sur Application Gateway, utilisez la commande OpenSSL suivante :

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

Où :

  • -cert spécifie le chemin d’accès au certificat client (certificat feuille)
  • -key spécifie le chemin d’accès au fichier de clé privée du client
  • -verify_return_error garantit que la commande échoue si la vérification du certificat échoue

Pour plus d’informations sur l’utilisation de la commande OpenSSL s_client , consultez la page manuelle OpenSSL.

SslClientVerify est ÉCHOUÉ

Problème

La propriété sslClientVerify s’affiche en tant que « Échec » dans vos journaux d’accès, indiquant que la validation du certificat client a échoué pendant l’établissement d’une liaison TLS.

Solution

Il existe de nombreuses causes potentielles d'erreurs dans les journaux d'accès. Voici une liste des causes courantes de l’échec :

  • Impossible d’obtenir le certificat de l’émetteur : Impossible de trouver le certificat émetteur du certificat client. Ce problème signifie normalement que la chaîne de certificats d’autorité de certification cliente approuvée n’est pas terminée sur Application Gateway. Vérifiez que la chaîne de certificats d’autorité de certification cliens approuvés chargée sur Application Gateway est terminée.
  • Impossible d’obtenir le certificat émetteur local : Comme pour l’obtention du certificat d’émetteur, le certificat émetteur du certificat client n’a pas pu être trouvé. Ce problème signifie normalement que la chaîne de certificats de l’autorité de certification cliente approuvée n’est pas complète sur l'Application Gateway. Vérifiez que la chaîne de certificats d’autorité de certification cliens approuvés chargée sur Application Gateway est terminée.
  • Impossible de vérifier le premier certificat : Impossible de vérifier le certificat client. Cette erreur se produit spécifiquement lorsque le client présente uniquement le certificat feuille, dont l’émetteur n’est pas approuvé. Vérifiez que la chaîne de certificats d’autorité de certification cliens approuvés chargée sur Application Gateway est terminée.
  • Impossible de vérifier l’émetteur du certificat client : Cette erreur se produit lorsque la configuration VerifyClientCertIssuerDN a la valeur true. Cette erreur se produit généralement lorsque l’émetteur DN du certificat client ne correspond pas au clientCertificateIssuerDN extrait de la chaîne de certificats d’autorité de certification cliente approuvée chargée par le client. Pour plus d’informations sur la façon dont Application Gateway extrait le ClientCertificateIssuerDN, consultez Extraction du DN de l’émetteur par Application Gateway. Comme meilleure pratique, veillez à charger une chaîne de certificats par fichier dans Application Gateway.
  • Objectif du certificat non pris en charge : Vérifiez que le certificat client désigne l’utilisation de clé étendue pour l’authentification client (1.3.6.1.5.5.7.3.2). Pour plus d’informations sur la définition de l’utilisation étendue des clés et de l’identificateur d’objet pour l’authentification client, consultez RFC 3280 et RFC 5280.

Pour plus d’informations sur l’extraction de toute la chaîne de certificats d’autorité de certification clients approuvés à charger vers Application Gateway, consultez Extraire des chaînes de certificats d’autorité de certification clients approuvés.

Résolution des problèmes de code d’erreur

Les codes d’erreur suivants s’affichent lors de la configuration de l’authentification mutuelle. Chaque erreur inclut la cause probable et la solution recommandée.

Code d’erreur : ApplicationGatewayTrustedClientCertificateMustSpecifyData

La cause

Le fichier de certificat chargé est manquant ou contient un fichier vide sans contenu de certificat valide.

Solution

Vérifiez que le fichier de certificat contient des données de certificat valides au format correct (PEM). Utilisez un éditeur de texte pour confirmer que le fichier contient du contenu de certificat entre les délimiteurs -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----.

Code d’erreur : ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey

La cause

Il existe une clé privée dans la chaîne de certificats. Il ne doit pas y avoir de clé privée dans la chaîne de certificats.

Solution

Vérifiez deux fois la chaîne de certificats qui a été chargée et supprimez la clé privée qui faisait partie de la chaîne. Réimportez la chaîne sans la clé privée.

Code d’erreur : ApplicationGatewayTrustedClientCertificateInvalidData

La cause

Il existe deux causes potentielles pour cette erreur :

  • Échec d’analyse : La chaîne de certificats n’est pas au format correct. Application Gateway attend des chaînes de certificats au format PEM avec des certificats individuels correctement délimités.
  • Contenu vide : Le fichier chargé contient uniquement des délimiteurs sans données de certificat réelles entre eux.

Solution

En fonction de la cause spécifique, appliquez l’une des solutions suivantes :

  • Problème de format : Vérifiez que la chaîne de certificats est au format PEM avec chaque certificat correctement délimité par les marqueurs -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----. Chaque certificat doit se trouver sur des lignes distinctes au sein de ces délimiteurs.
  • Données manquantes : Vérifiez que le fichier de certificat contient des données de certificat réelles entre les délimiteurs, pas seulement les délimiteurs vides.

Code d’erreur : ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate

La cause

Le certificat chargé contient uniquement un certificat feuille, sans certificat d’autorité de certification. Le chargement d’une chaîne de certificats avec des certificats d’autorité de certification et un certificat feuille est acceptable dans la mesure où le certificat feuille sera simplement ignoré, mais un certificat doit avoir une autorité de certification.

Solution

Vérifiez que la chaîne de certificats inclut au moins un certificat d’autorité de certification avec l’extension BasicConstraintsOid appropriée (OID : 2.5.29.19) où l’indicateur d’autorité de certification a la valeur TRUE. Cette extension indique que le sujet du certificat peut agir en tant qu’autorité de certification.

Pour vérifier l’état de l’autorité de certification d’un certificat, utilisez :

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

La sortie doit afficher « CA :TRUE » pour les certificats d’autorité de certification valides.

Code d’erreur : ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate

La cause

La chaîne de certificats contenait plusieurs certificats d’autorité de certification racine ou contenait des certificats d’autorité de certification racine zéro.

Solution

Les certificats chargés doivent contenir exactement un certificat d’autorité de certification racine (et toutefois de nombreux certificats d’autorité de certification intermédiaires si nécessaire).