Génération et configuration d'un SSL certificat pour l'authentification du backend dans Gateway API - APIPasserelle Amazon

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.

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

Vous pouvez utiliser API Gateway pour générer un SSL certificat, puis utiliser sa clé publique dans le backend pour vérifier que les HTTP demandes adressées à votre système principal proviennent de API Gateway. Cela permet à votre HTTP backend de contrôler et d'accepter uniquement les demandes provenant d'Amazon API Gateway, même si le backend est accessible au public.

Note

Certains serveurs principaux peuvent ne pas prendre en charge l'authentification des SSL clients, contrairement à API Gateway, et peuvent renvoyer une erreur de SSL certificat. Pour obtenir la liste des serveurs backend non compatibles, consultez Remarques importantes concernant Amazon API Gateway.

Les SSL certificats 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 leAPIs.

Génération d'un certificat 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 RESTAPI.

  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. APIGateway génère un nouveau certificat et renvoie le nouveau certificatGUID, ainsi que la clé publique PEM codée.

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

Configurer et API utiliser des SSL certificats

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

  1. Dans la console API Gateway, créez ou ouvrez un certificat API pour lequel vous souhaitez utiliser le certificat client. Assurez-vous qu'il API a été déployé sur une scène.

  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.

    S'il API a déjà été déployé dans la console API Gateway, vous devrez le redéployer pour que les modifications prennent effet. Pour plus d’informations, consultez Création d'un déploiement pour une REST API API passerelle intégrée.

Une fois qu'un certificat est sélectionné pour API et enregistré, API Gateway utilise le certificat pour tous les appels vers les HTTP intégrations dans votreAPI.

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

  1. Choisissez une API méthode. 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).

APIGateway présente le SSL certificat choisi pour que le HTTP backend authentifie le. API

Configuration d'un HTTPS serveur principal pour vérifier le certificat client

Ces instructions supposent que vous avez déjà terminé Génération d'un certificat 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 clientcertificate:by-idla API passerelle REST API ou get-client-certificatele AWS CLI.

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

Si le nom de domaine du serveur estmyserver.mydomain.com, la CNAME valeur du certificat de 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 APIAutorités de certification prises en charge par Gateway HTTP et intégrations de HTTP proxy dans Gateway API.

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 serveur Node.js dans le backend, vous pouvez configurer le serveur comme suit :

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 client-certificate-authmodules pour authentifier les demandes des clients à l'aide de certificats PEM codés.

Pour les autres HTTPS serveurs, 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 une rotation du certificat avant qu'un certificat client n'expire sur une API scène afin d'éviter toute interruption de service pour leAPI. Vous pouvez vérifier la date d'expiration du certificat en appelant:by-id clientCertificatede la passerelle API ou en exécutant la commande AWS CLI et en get-client-certificateinspectant REST API la propriété renvoyée. expirationDate

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

  1. Générez un nouveau certificat client en appelant clientcertificate:generate de la API passerelle REST API ou en utilisant la commande de. AWS CLI generate-client-certificate 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 le API stage pour utiliser le nouveau certificat client en appelant stage:update of the API Gateway RESTAPI, avec le nouvel ID du 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" } ] }

    ou en appelant la CLI commande update-stage.

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

  5. Supprimez l'ancien certificat de API Gateway en appelant le clientcertificate:delete de API Gateway RESTAPI, en spécifiant le clientCertificateId (a1b2c3) de l'ancien certificat :

    DELETE /clientcertificates/a1b2c3

    ou en appelant la CLI commande suivante delete-client-certificate:

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

Pour faire pivoter un certificat client dans la console pour un certificat précédemment déployéAPI, procédez comme suit :

  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 le certificat client API pour lequel vous souhaitez utiliser.

  4. Choisissez Stages sous la case sélectionnée, API 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.

    Vous devez redéployer le API pour que les modifications prennent effet. Pour plus d'informations, voir Création d'un déploiement pour une REST API API passerelle intégrée.