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