Comment résoudre les erreurs liées aux certificats SSL générés par l'API Gateway ?

Lecture de 4 minute(s)
0

Je rencontre des problèmes avec les certificats SSL auto-signés et expirés installés sur mon système principal. Comment les corriger ?

Brève description

Lorsqu'Amazon API Gateway effectue une liaison SSL avec le backend, l'API Gateway attend du backend qu'il fournisse des certificats obtenus auprès d'émetteurs fiables. API Gateway s'attend à ce que les certificats soient valides et qu'ils n'aient pas expiré. 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 autorités de certification intermédiaires et les détails du certificat parent. Grâce à ces informations, API Gateway peut terminer la validation des certificats en parcourant la chaîne de certificats.

Solution

Tester l'intégration de proxy HTTP

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

1.    Créez une ressource nommée « /selfsigned » avec une méthode GET. Configurez ensuite une intégration de proxy HTTP avec l'URL https://self-signed.badssl.com/.

À partir de la console API Gateway, testez l'API. Vous recevez l'erreur suivante :

Thu Dec 15 16:05:05 UTC 2022 : Sending request to https://self-signed.badssl.com/
Thu Dec 15 16:05:05 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

2.    Créez une ressource nommée « /expiredcert » avec une méthode GET. Ensuite, configurez une intégration de proxy HTTP avec l'URL https://expired.badssl.com/.

À partir de la console API Gateway, testez l'API. Vous recevez l'erreur suivante :

Thu Dec 15 16:06:02 UTC 2022 : Sending request to https://expired.badssl.com/
Thu Dec 15 16:06:02 UTC 2022 : Execution failed due to configuration error: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed

3.    Créez une ressource nommée « /untrustedRootCA » avec une méthode GET. Configurez une intégration de proxy HTTP avec l'URL https://untrusted-root.badssl.com/.

À partir de la console API Gateway, testez l'API. Vous recevez l'erreur suivante :

Thu Dec 15 16:06:28 UTC 2022 : Sending request to https://untrusted-root.badssl.com/
Thu Dec 15 16:06:28 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Intégration de liens VPC

Grâce à l'intégration des liens VPC, l'API Gateway effectue la validation des certificats lors du saut suivant qui effectue la terminaison TLS.

Lorsqu'un Network Load Balancer possède un écouteur TLS, le Network Load Balancer met fin au protocole TLS et ainsi crée une autre connexion avec la cible. Le certificat joint 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 qui sont 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 respecter les exigences SSL.

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

Si le Network Load Balancer principal possède un certificat auto-signé ou privé qui n'a pas été émis par une autorité de certification, vous recevez le message d'erreur suivant :

Execution failed due to configuration error: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

La solution de contournement pour l'erreur d'échec d'exécution consiste à définir insecureSkipVerification sur true dans l'objet tlsConfig de l'intégration :

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"

Informations connexes

Génération et configuration d'un certificat SSL pour l'authentification du backend

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

Groupes cible pour vos Network Load Balancers

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