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.
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.
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.
Rubriques
- Génération d’un certificat de client à l’aide de la console API Gateway
- Configuration d’une API pour utiliser les certificats SSL
- Appel de test pour vérifier la configuration de certificat client
- Configuration du serveur HTTPS backend pour vérifier le certificat client
- Rotation d’un certificat client arrivant à expiration
- Autorités de certification prises en charge par API Gateway pour les intégrations HTTP et les intégrations de proxy HTTP
Génération d’un certificat de client à l’aide de la console API Gateway
Ouvrez la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. Choisissez une API REST.
Dans le volet de navigation principal, choisissez Certificats de clients.
Sur la page Certificats de clients, choisissez Générer un certificat.
-
(Facultatif) Sous Description, entrez une description.
-
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é publique codée en PEM.
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.
-
Dans la console API Gateway, créez ou ouvrez une API pour laquelle vous souhaitez utiliser le certificat de client. Vérifiez que l’API a été déployée dans une étape.
Dans le volet de navigation principal, choisissez Étapes.
Dans la section Détails de l’étape, choisissez Modifier.
Pour Certificat de client, sélectionnez un certificat.
-
Sélectionnez Enregistrer les modifications.
Si l’API a déjà été déployée dans la console API Gateway, vous devez la redéployer pour que les changements prennent effet. Pour plus d’informations, consultez Création d’un déploiement pour une API REST dans API Gateway.
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
-
Sélectionnez une méthode d’API. Choisissez l’onglet Test. Vous devrez peut-être choisir la flèche droite pour afficher l’onglet Test.
-
Pour Certificat de client, sélectionnez un certificat.
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 backend pour vérifier le certificat SSL client d’API Gateway, vous devez avoir obtenu la clé privée codée PEM et un certificat côté serveur qui est fourni par une autorité de certification reconnue.
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
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 Express
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. Vous pouvez vérifier la date d’expiration du certificat en appelant la commande clientCertificate:by-id de l’API REST API Gateway ou la commande AWS CLI de get-client-certificate et en inspectant la propriété expirationDate renvoyée.
Pour faire pivoter un certificat client, procédez comme suit :
-
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
. -
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.
-
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" } ] }
ou en appelant la commande CLI update-stage.
-
Mettez à jour le serveur backend pour supprimer l’ancien certificat.
-
Supprimez l’ancien certificat d’API Gateway en appelant la commande clientcertificate:delete de l’API REST API Gateway, en spécifiant le clientCertificateId (
a1b2c3
) de l’ancien certificat :DELETE /clientcertificates/a1b2c3
ou en appelant la commande CLI de delete-client-certificate :
aws apigateway delete-client-certificate --client-certificate-id a1b2c3
Pour effectuer la rotation d’un certificat client dans la console pour une API déployée précédemment, procédez comme suit :
Dans le volet de navigation principal, choisissez Certificats de clients.
Dans le volet Certificats de clients, choisissez Générer un certificat.
-
Ouvrez l’API pour laquelle vous souhaitez utiliser le certificat client.
Sélectionnez Stages sous l’API sélectionnée, puis choisissez une étape.
Dans la section Détails de l’étape, choisissez Modifier.
Pour Certificat de client, sélectionnez le nouveau certificat.
-
Pour enregistrer les paramètres, choisissez Enregistrer les modifications.
Vous devez redéployer l’API pour que les modifications prennent effet. Pour plus d’informations, consultez Création d’un déploiement pour une API REST dans API Gateway.