Passer au contenu

Comment puis-je identifier et résoudre les problèmes de connexion client lorsque j'utilise mTLS avec un Application Load Balancer ?

Lecture de 9 minute(s)
0

Je souhaite résoudre les problèmes de connexion client que je rencontre lorsque j'utilise Mutual Transport Layer Security (mTLS) avec un Application Load Balancer.

Brève description

Pour étudier les problèmes de connexion client, vous devez activer les journaux de connexion pour l'Application Load Balancer. Utilisez les journaux de connexion pour analyser les schémas de requêtes et résoudre les problèmes.

Pour plus d'informations sur les informations fournies par les journaux de connexion, consultez la section Surveiller vos Application Load Balancers.

Résolution

Les journaux de connexion de l’Application Load Balancer identifient les erreurs qui se sont affichées lorsque le client a tenté de se connecter à l'Application Load Balancer.
Remarque : pour plus d'informations sur les méthodes de traitement des erreurs, consultez la section Traitement des fichiers journaux de connexion.

Filtrer les journaux de connexion pour examiner des erreurs spécifiques

Filtrez les journaux de connexion en fonction de l'adresse IP du client pour rechercher des erreurs.

  1. Exécutez la commande suivante pour rechercher les demandes ayant échoué :

    zcat *.log.gz | awk '($2 == "a.a.a.a" && $11 ~ "Failed")' | awk '{print $1, $5, $6, $8, $9, $10, $11, $12}'

    Remarque : remplacez a.a.a.a par l'adresse IP client sur laquelle vous recherchez des erreurs.

    Exemple de sortie :

    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"
  2. Obtenez le code d'erreur dans le champ tls_verify_status.

  3. Reportez-vous aux codes de motif d'erreur pour identifier l'erreur.

  4. Utilisez les sections suivantes pour corriger l'erreur spécifique.

Erreur : « ClientCertCrlHit »

Cette erreur se produit lorsque le certificat client figure dans la liste de révocation de certificats (CRL) utilisée par l'écouteur mTLS.

  1. Vérifiez l'entrée du journal de connexions qui affiche le champ leaf_client_cert_subject.
  2. Téléchargez le fichier CRL depuis le compartiment Amazon Simple Storage Service (Amazon S3). Le fichier CRL est référencé par le magasin de confiance Amazon Elastic Compute Cloud (Amazon EC2).
  3. Vérifiez la CRL du certificat client qui a été identifié dans l'entrée du journal.
  4. Renouvelez le certificat client par rapport au paquet CA utilisé par le magasin de confiance EC2. Essayez de vous connecter à nouveau à l'aide du nouveau certificat non révoqué.

Erreur : « ClientCertCrlProcessingError »

Cette erreur se produit lorsque la liste de révocation de certificats (CRL) rencontre une erreur de traitement.

Pour résoudre cette erreur, procédez comme suit :

  1. Documentez l'horodatage associé à l'erreur dans les journaux de connexion.
  2. Vérifiez que le certificat client répond aux exigences définies.
  3. Assurez-vous que la CRL configurée ne dépasse pas les quotas définis.

Si l'erreur persiste, contactez AWS Support pour un examen plus approfondi. Fournissez les informations suivantes à l'ingénieur AWS Support :

  • Sortie de la commande curl suivante :

     curl -vvv -X HTTP_action --cert client-cert.crt --key client_key.pem https://alb.fqdn.com -A credstest

    Remarque : remplacez HTTP_action par l’action HTTP, client-cert.crt par le nom du fichier de certificat et client_key.pem par le nom du fichier de clé.

  • Certificat client (ne fournissez pas le fichier de clé)

  • Journaux de connexion pour la période durant laquelle le problème est survenu

Erreur : « ClientCertExpired »

Cette erreur se produit lorsque le certificat client a expiré.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez la période de validité du certificat. Vous pouvez trouver cette valeur dans le champ leaf_client_cert_validity du journal de connexions.

  2. Exécutez la commande suivante sur le fichier de certificat :

    openssl x509 -in $i --text | grep -A 2 "Validity"
  3. Vérifiez la date Pas avant indiquée à l'étape 2 par rapport au champ horodatage du journal de connexions.
    Remarque : assurez-vous que le certificat client n'est utilisé qu'avant la date Pas avant.

  4. Pour résoudre cette erreur, utilisez le paquet de certificats CA référencé par le magasin de confiance EC2 pour réémettre le certificat client.

Erreur : « ClientCertInvalid »

Cette erreur se produit car le certificat client n'est pas valide.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez que le certificat client répond aux exigences afin qu'il puisse être utilisé avec mTLS et l'Application Load Balancer.
  2. Réémettez le certificat.

Erreur : « ClientCertMaxChainDepthExceeded »

Cette erreur se produit car le nombre de certificats clients a dépassé la profondeur de chaîne maximale.

Pour résoudre cette erreur, procédez comme suit :

  1. Confirmez le nombre de certificats figurant dans le certificat client présenté à l'Application Load Balancer.

  2. Pour examiner la profondeur de la chaîne de certificats, utilisez l'une des options suivantes :

    Windows : Choisissez le certificat, puis sélectionnez Chemin du certificat. Puis, comptez les certificats.
    -ou-
    Exécutez la commande suivante dans Microsoft PowerShell et comptez les certificats :

    certutil -dump client-cert.crt

    Remarque : remplacez client-cert.crt par le nom du fichier de certificat.

    Linux ou Unix : Pour compter les certificats, exécutez la commande suivante :

    openssl crl2pkcs7 -nocrl -certfile client-cert.crt | openssl pkcs7 -print_certs -noout | grep "subject" | wc -l

    Remarque : remplacez client-cert.crt par le nom de votre fichier de certificat.

  3. Réduisez le nombre de certificats présents dans la chaîne du certificat client. Pour plus d'informations sur la profondeur maximale de chaîne de certificats prise en charge, consultez la section Quotas pour votre Application Load Balancer.

Erreur : « ClientCertMaxSizeExceeded »

Cette erreur se produit car la taille maximale du certificat client est dépassée.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez la taille du certificat client :
    Windows Choisissez le fichier. Puis, sélectionnez les propriétés et visualisez la taille du fichier.
    Linux Exécutez du -h file.
    Remarque : remplacez file par le nom de votre fichier.
    Macintosh Sélectionnez l'élément dans le Finder, puis appuyez sur Commande+I.
  2. Réduisez la taille du fichier de certificat client présenté à l'Application Load Balancer. Pour plus d'informations sur la taille de certificat maximale prise en charge, consultez la section Quotas pour votre Application Load Balancer.

Erreur : « ClientCertNotYetValid »

Cette erreur se produit car le certificat client n'est pas encore valide.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez la période de validité du certificat. Vous pouvez trouver cette valeur dans le champ leaf_client_cert_validity du journal de connexions.

  2. Exécutez la commande suivante sur le fichier de certificat :

    openssl x509 -in $i --text | grep -A 2 "Validity"
  3. Vérifiez la date Pas avant indiquée à l'étape 2 par rapport au champ d'horodatage du journal de connexions.
    Remarque : assurez-vous que le certificat client n'est utilisé qu'après la date Pas avant.

  4. Pour résoudre cette erreur, utilisez le paquet de certificats CA référencé par le magasin de confiance EC2 pour réémettre le certificat client.

Erreur : « ClientCertPurposeInvalid »

Cette erreur se produit car le certificat client ne dispose pas de la clé d'utilisation étendue (EKU) « Authentification du client Web TLS ».

Pour résoudre cette erreur, procédez comme suit :

  1. Émettez un nouveau certificat client avec l’EKU clientAuth et réessayez.

  2. Pour valider, exécutez la commande suivante :

    openssl x509 -in client-cert.crt --text | grep -A 1 "X509v3 Extended Key Usage:"

    Remarque : remplacez client-cert.crt par le nom du fichier de certificat.

  3. Vérifiez « Authentification du client Web TLS » dans la liste.

Erreur : « ClientCertRejected »

Cette erreur se produit car le certificat client est rejeté par une validation personnalisée du serveur.

Pour résoudre cette erreur, procédez comme suit :

  1. Assurez-vous que l'écouteur de l'Application Load Balancer utilise mTLS en mode Passthrough ou Verify.
    En mode Passthrough, l'équilibreur de charge utilise des en-têtes HTTP pour envoyer le certificat client et la chaîne à la cible à des fins de vérification. Cette erreur s'affiche lorsque la cible rejette le certificat client.
  2. Consultez les journaux d'application sur la cible pour déterminer la cause de l'erreur.
  3. Il est recommandé d'utiliser le mode Verify au lieu du mode Passthrough sur l'écouteur mTLS.

Erreur : « ClientCertTypeUnsupported »

Cette erreur se produit car Application Load Balancer ne prend pas en charge au moins un des certificats de la chaîne fournie par le client. Le certificat utilise une version de certificat X509, une taille de clé, un algorithme de clé ou un algorithme de signature non pris en charge.

Pour résoudre cette erreur, procédez comme suit :

  1. Exécutez la commande suivante sur la chaîne de certificats client :

    openssl x509 -in client-cert.crt —text

    Remarque : remplacez client-cert.crt par le nom du fichier de certificat.

  2. Vérifiez que tous les certificats de la chaîne sont conformes aux exigences relatives aux certificats.

Erreur : « ClientCertUntrusted »

Cette erreur se produit car le certificat client est non approuvé.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez que le nom du certificat dans le champ leaf_client_cert_subject a été émis par l'autorité de certification (CA) présente dans le magasin de confiance EC2 configuré.
    Remarque : si l'émetteur du certificat client n'est pas présent dans le paquet de certificats CA utilisé par le magasin de confiance EC2, mTLS ne fonctionnera pas.

  2. Exécutez la commande suivante sur le certificat client :

    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: /'"

    Remarque : remplacez client-cert.crt par le nom du fichier de certificat.

  3. Pour récupérer les sujets présents dans le paquet, exécutez la commande suivante sur le paquet de certificats CA utilisé par le magasin de confiance EC2 :

    openssl crl2pkcs7 -nocrl -certfile client-cert.crt | openssl pkcs7 -print_certs -noout | grep -e 'subject' | sed -e 's/subject.*CN = /Subject: /'

    Remarque : remplacez client-cert.crt par le nom du fichier de bundle de certificats.

Erreur : « UnmappedConnectionError »

Cette erreur se produit lorsque la connexion d'exécution ne peut pas être mappée.

Contactez AWS Support pour un examen plus approfondi. Fournissez les informations suivantes à l'ingénieur AWS Support :

  • Sortie de la commande curl suivante :

     curl -vvv -X HTTP_action --cert client-cert.crt --key client_key.pem https://alb.fqdn.com -A credstest

    Remarque : remplacez HTTP_action par le nom de l’action HTTP, client-cert.crt par le nom du fichier de certificat et client_key.pem par le nom du fichier de clé.

  • Certificat client (ne fournissez pas le fichier de clé)

  • Journaux de connexion pour la période durant laquelle le problème est survenu

Informations connexes

Comment utiliser Amazon Athena pour interroger les journaux de connexion de mon Application Load Balancer ?

Présentation de mTLS pour Application Load Balancer

Comment étudier les problèmes liés au paquet CA pour les écouteurs mTLS sur l'Application Load Balancer ?