Comment puis-je résoudre les erreurs d'API Gateway lorsque j'utilise des certificats SSL avec intégration de back-end ?

Lecture de 6 minute(s)
0

Je souhaite utiliser un certificat SSL avec intégration de back-end dans Amazon API Gateway, mais un message d'erreur s'affiche.

Brève description

Lorsqu'API Gateway établit une liaison SSL avec le backend, API Gateway s'attend à ce que le backend fournisse des certificats provenant d'émetteurs fiables. API Gateway s'attend à ce que les certificats soient valides et non expirés. API Gateway s'attend également à ce que la chaîne de confiance soit intacte. Cela signifie qu'API Gateway s'attend à ce que le certificat contienne une autorité de certification (CA) racine, des CA intermédiaires et les détails du certificat parent. Grâce à ces informations, API Gateway peut terminer la validation du certificat lorsqu'il passe par la chaîne de certificats.

Résolution

Tester l’intégration de proxy HTTP

Pour vous familiariser avec les intégrations de proxy HTTP, testez les certificats SSL erronés depuis la console API Gateway. Pour plus d'informations sur les certificats SSL erronés et pour les tests, consultez le site Web SSL erroné.

  1. Créez une ressource nommée /selfsigned à l’aide d'une méthode GET. Configurez ensuite une intégration de proxy HTTP avec l'URL .

    À partir de la console API Gateway, testez l'API. Si le message d'erreur suivant s’affiche :

    « Jeu 15 décembre 16:05:05 UTC 2022  : Envoi de la requête à
    Jeudi 15 décembre 16:05:05 UTC 2022 : L'exécution a échoué en raison d'une erreur de configuration : Échec de création du chemin PKIX : sun.security.provider.certpath.SunCertPathBuilderException : chemin de certification valide vers la cible demandée introuvable »

  2. Créez une ressource nommée /expiredcert à l'aide d'une méthode GET. Puis, configurez une intégration de proxy HTTP avec l'URL .

    À partir de la console API Gateway, testez l'API. Si le message d'erreur suivant s’affiche :

    « Jeu 15 décembre 16:06:02 UTC 2022 : Envoi de la requête à
    Jeudi 15 décembre 16:06:02 UTC 2022 : L'exécution a échoué en raison d'une erreur de configuration : La validation du chemin PKIX a échoué : java.security.cert.CertPathValidatorException : échec de vérification de la validité »

  3. Créez une ressource nommée /untrustedRootCA à l'aide d'une méthode GET. Configurez une intégration de proxy HTTP à l'aide de l'URL .

    À partir de la console API Gateway, testez l'API. Si le message d'erreur suivant s’affiche :

    « Jeu 15 décembre 16:06:28 UTC 2022 : Envoi de la requête à
    Jeudi 15 décembre 16:06:28 UTC 2022 : L'exécution a échoué en raison d'une erreur de configuration : Échec de création du chemin PKIX : sun.security.provider.certpath.SunCertPathBuilderException : chemin de certification valide vers la cible demandée introuvable »

Résoudre l'erreur « Échec de création du chemin PKIX »

Grâce à l'intégration de liens VPC, API Gateway effectue la validation des certificats avec le saut suivant qui effectue la terminaison TLS. Lorsqu'un Network Load Balancer utilise un écouteur TLS, il effectue une terminaison TLS et crée une autre connexion avec la cible. Le certificat attaché au Network Load Balancer doit répondre à toutes les exigences. Un Network Load Balancer n'effectue pas de validation de certificat lors de la liaison SSL avec la cible.

Le Network Load Balancer accepte les certificats expirés ou auto-signés installés sur les instances cibles. Le Network Load Balancer et les groupes cibles sont liés au sein d'un VPC et les communications sont sécurisées. Si le Network Load Balancer utilise un écouteur TCP, la liaison TLS s'effectue de bout en bout. Dans ces cas, l'application principale doit être conforme aux exigences SSL.

API Gateway prend en charge l'indication du nom du serveur (SNI) lors d'une liaison SSL via une intégration de lien VPC.

Lorsqu'API Gateway ne parvient pas à valider l'autorité de certification (CA) de votre certificat Network Load Balancer principal, le message d'erreur suivant s'affiche :

« L'exécution a échoué en raison d'une erreur de configuration : La création du chemin PKIX a échoué :
sun.security.provider.certpath.SunCertPathBuilderException : chemin de certification valide vers la cible demandée introuvable »

Si l'erreur Échec de création du chemin PKIX s'affiche, il se peut que l'un des problèmes de certificat suivants soient survenus :

  • Chaîne de certificats incomplète : Si votre certificat SSL n'inclut pas les certificats intermédiaires attendus ou si la chaîne de certificats complète n'est pas présente, la validation du certificat échoue.
  • CA non pris en charge : Si le certificat n'est pas émis par une CA prise en charge par API Gateway, la validation échoue. Cela vaut également pour les certificats auto-signés ou privés qui ne sont pas émis par une CA.

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

Activez « InsecureSkipVerification »

Remarque : Il n'est pas recommandé d'utiliser cette méthode pour les cas d'utilisation en production.

Définissez l'option insecureSkipVerification sur true pour l'intégration spécifique qui entraîne une erreur. Notez que seules les intégrations HTTP et HTTP_PROXY prennent en charge ce paramètre. Lorsque vous définissez cette option sur true, API Gateway ignore la vérification par la CA pour le certificat du point de terminaison d'intégration. Cela vous permet également d'utiliser un certificat auto-signé ou un certificat provenant d'une CA privée.

Remarque : Remplacez EXAMPLE-REST-API-ID et EXAMPLE-RESOURCE-ID par vos valeurs.

aws apigateway update-integration --rest-api-id EXAMPLE-REST-API-ID --resource-id EXAMPLE-RESOURCE-ID --http-method GET --patch-operations "op='replace',path='/tlsConfig/insecureSkipVerification',value=true"

Lorsque vous activez insecureSkipVerification, API Gateway effectue toujours la validation de base du certificat. Cette validation inclut la vérification de la date d'expiration du certificat, du nom d'hôte et de la présence d'une CA racine.

Vérifier que la chaîne de certificats est complète

Pour vérifier si la chaîne de chemins de certificat est complète, exécutez la commande OpenSSL suivante :

Remarque : Pour exécuter cette commande, vous devez installer OpenSSL. Pour plus d’informations, consultez le site Web d’OpenSSL.

$ openssl s_client -servername example.com -connect example.com:443

Pour plus d'informations, consultez la page s_client sur le site Web d'OpenSSL.

Si votre chaîne de certificats est complète, la commande renvoie verify ok. Sinon, la sortie indique une chaîne de certificats incomplète pour tout type de certificat (CA prises en charge ou non prises en charge).

Remarque : Assurez-vous également que votre URI d'intégration dans l'API Gateway avec le Network Load Balancer utilise un domaine de premier niveau valide (TLD). La console API Gateway peut ne pas autoriser les URL de point de terminaison qui se terminent par des extensions de domaine spécifiques.

Informations connexes

Générer et configurer un certificat SSL pour l'authentification backend

Autorités de certification prises en charge par API Gateway pour les intégrations HTTP et de proxy HTTP

Groupes cibles pour vos Network Load Balancers

Générer et configurer un certificat SSL pour l'authentification backend

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an