View a markdown version of this page

Utiliser un Gateway-generated certificat d'API pour l'authentification du backend dans API Gateway - Amazon API Gateway

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser un Gateway-generated certificat d'API pour l'authentification du backend dans API Gateway

Vous pouvez utiliser API Gateway pour générer un certificat SSL et utiliser sa clé publique sur le backend afin de vérifier que les requêtes HTTP adressées à votre système backend proviennent d’API Gateway. Votre backend HTTP peut ainsi contrôler et accepter uniquement les demandes provenant d’Amazon API Gateway, même si le backend est accessible publiquement.

Note

Certains backends peuvent ne pas prendre en charge l’authentification de client SSL comme le fait API Gateway et peuvent renvoyer une erreur de certificat SSL. Pour obtenir la liste des serveurs backend non compatibles, consultez Remarques importantes concernant Amazon API Gateway.

Astuce

Pour utiliser votre propre CA-signed certificat d'ACM au lieu d'un certificat Gateway-generated auto-signé par API, consultez. Utilisez votre propre certificat ACM pour le TLS mutuel du backend dans API Gateway

Les certificats SSL générés par API Gateway sont auto-signés et seule la clé publique d’un certificat est visible dans la console API Gateway ou via les API.

Génération d’un certificat de client à l’aide de la console API Gateway

  1. Ouvrez la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway/.

  2. Choisissez un REST ou une WebSocket API.

  3. Dans le volet de navigation principal, choisissez Certificats de clients.

  4. Sur la page Certificats de clients, choisissez Générer un certificat.

  5. (Facultatif) Sous Description, entrez une description.

  6. Choisissez Générer un certificat pour générer le certificat. API Gateway génère un nouveau certificat et renvoie le GUID du nouveau certificat, ainsi que la clé PEM-encoded publique.

Vous êtes maintenant prêt à configurer une API pour utiliser le certificat.

Configuration d’une API pour utiliser les certificats SSL

Ces instructions supposent que vous avez déjà terminé Génération d’un certificat de client à l’aide de la console API Gateway.

  1. Dans la console API Gateway, créez ou ouvrez un WebSocket REST ou une API pour lequel vous souhaitez utiliser le certificat client. Vérifiez que l’API a été déployée dans une étape.

  2. Dans le volet de navigation principal, choisissez Étapes.

  3. Dans la section Détails de l'étape, choisissez Modifier.

  4. Pour Certificat de client, sélectionnez un certificat.

  5. Sélectionnez Enregistrer les modifications.

Une fois qu’un certificat a été sélectionné pour l’API et enregistré, API Gateway l’utilise pour tous les appels aux intégrations HTTP de votre API.

Appel de test pour vérifier la configuration de certificat client

  1. Choisissez une méthode pour l’API REST. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet Test.

  2. Pour Certificat de client, sélectionnez un certificat.

  3. Sélectionnez Tester).

API Gateway présente le certificat SSL choisi pour permettre au backend HTTP d’authentifier l’API.

Configuration du serveur HTTPS backend pour vérifier le certificat client

Ces instructions supposent que vous avez déjà terminé Génération d’un certificat de client à l’aide de la console API Gateway et téléchargé une copie du certificat client. Vous pouvez télécharger un certificat client en appelant la commande clientcertificate:by-id de l’API REST API Gateway ou la commande get-client-certificate de l’ AWS CLI.

Avant de configurer un serveur HTTPS principal pour vérifier le certificat SSL client d'API Gateway, vous devez avoir obtenu la clé PEM-encoded privée et un certificat côté serveur fournis par une autorité de certification fiable.

Si le nom de domaine du serveur est myserver.mydomain.com, la valeur CNAME du certificat du serveur doit être myserver.mydomain.com ou *.mydomain.com.

Les autorités de certification prises en charge comprennent Let’s Encrypt ou l’une des Autorités de certification prises en charge par API Gateway pour les intégrations HTTP et les intégrations de proxy HTTP.

Par exemple, supposons que le fichier de certificat client est apig-cert.pem et que les fichiers de clé privée et de certificat du serveur sont server-key.pem et server-cert.pem, respectivement. Pour un Node.js serveur du backend, vous pouvez configurer le serveur de la manière suivante :

var fs = require('fs'); var https = require('https'); var options = { key: fs.readFileSync('server-key.pem'), cert: fs.readFileSync('server-cert.pem'), ca: fs.readFileSync('apig-cert.pem'), requestCert: true, rejectUnauthorized: true }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(443);

Pour une application node-express, vous pouvez utiliser les modules client-certificate-auth pour authentifier les demandes des clients à l'aide de certificats. PEM-encoded

Pour les autres serveurs HTTPS, consultez la documentation du serveur.

Rotation d’un certificat client arrivant à expiration

Le certificat client généré par API Gateway est valide pendant 365 jours. Vous devez effectuer la rotation de ce certificat avant qu’un certificat client sur une étape d’API arrive à expiration afin d’éviter les temps d’arrêt pour l’API.

Faites pivoter un certificat client expirant à l'aide du Console de gestion AWS

La procédure suivante montre comment effectuer la rotation d’un certificat client dans la console pour une API déployée précédemment.

  1. Dans le volet de navigation principal, choisissez Certificats de clients.

  2. Dans le volet Certificats de clients, choisissez Générer un certificat.

  3. Ouvrez l’API pour laquelle vous souhaitez utiliser le certificat client.

  4. Sélectionnez Stages sous l’API sélectionnée, puis choisissez une étape.

  5. Dans la section Détails de l'étape, choisissez Modifier.

  6. Pour Certificat de client, sélectionnez le nouveau certificat.

  7. Pour enregistrer les paramètres, choisissez Enregistrer les modifications.

Faites pivoter un certificat client expirant à l'aide du AWS CLI

Vous pouvez vérifier la date d'expiration du certificat en appelant le client Certificate:by-id de l'API REST API Gateway ou en utilisant la AWS CLI commande get-client-certificate et en inspectant la propriété ExpirationDate renvoyée. https://docs.aws.amazon.com/apigateway/latest/api/API_ClientCertificate.html#expirationDate

Pour faire pivoter un certificat client, procédez comme suit :

  1. Générez un nouveau certificat client en appelant la commande clientcertificate:generate de l’API REST API Gateway ou la commande generate-client-certificate de l’ AWS CLI . Dans ce didacticiel, nous supposons que l’ID du nouveau certificat client est ndiqef.

  2. Mettez à jour le serveur backend pour inclure le nouveau certificat client. Ne supprimez pas le certificat client existant pour l’instant.

    Certains serveurs peuvent nécessiter un redémarrage pour terminer la mise à jour. Consultez la documentation du serveur pour voir si vous devez redémarrer le serveur pendant la mise à jour.

  3. Mettez à jour l’étape d’API pour utiliser le nouveau certificat client en appelant la commande stage:update de l’API REST API Gateway, avec l’ID du nouveau certificat client (ndiqef) :

    PATCH /restapis/{restapi-id}/stages/stage1 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170603T200400Z Authorization: AWS4-HMAC-SHA256 Credential=... { "patchOperations" : [ { "op" : "replace", "path" : "/clientCertificateId", "value" : "ndiqef" } ] }

    Vous pouvez également utiliser la commande update-stage.

    Si vous utilisez une WebSocket API, utilisez la commande apigatewayv2 update-stage.

  4. Mettez à jour le serveur backend pour supprimer l’ancien certificat.

  5. Supprimez l'ancien certificat d'API Gateway en appelant le clientcertificate:delete de l'API REST API Gateway, en spécifiant le client CertificateId (a1b2c3) de l'ancien certificat :

    DELETE /clientcertificates/a1b2c3

    Vous pouvez également appeler la commande delete-client-certificate :

    aws apigateway delete-client-certificate --client-certificate-id a1b2c3