

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 certificat SSL pour l’authentification backend dans API Gateway
<a name="getting-started-client-side-ssl-authentication"></a>

 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](api-gateway-known-issues.md). 

 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 le APIs. 

**Topics**
+ [Génération d’un certificat de client à l’aide de la console API Gateway](#generate-client-certificate)
+ [Configuration d’une API pour utiliser les certificats SSL](#configure-api)
+ [Appel de test pour vérifier la configuration de certificat client](#test-invoke)
+ [Configuration du serveur HTTPS backend pour vérifier le certificat client](#certificate-validation)
+ [Rotation d’un certificat client arrivant à expiration](#certificate-rotation)
+ [Autorités de certification prises en charge par API Gateway pour les intégrations HTTP et les intégrations de proxy HTTP](api-gateway-supported-certificate-authorities-for-http-endpoints.md)

## Génération d’un certificat de client à l’aide de la console API Gateway
<a name="generate-client-certificate"></a>

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

1. Choisissez un REST ou une WebSocket API.

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

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

1.  (Facultatif) Sous **Description**, entrez une description. 

1. 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
<a name="configure-api"></a>

Ces instructions supposent que vous avez déjà terminé [Génération d’un certificat de client à l’aide de la console API Gateway](#generate-client-certificate).

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

1. Dans le volet de navigation principal, choisissez **Étapes**.

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

1. Pour **Certificat de client**, sélectionnez un certificat.

1. 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
<a name="test-invoke"></a>

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**.

1. Pour **Certificat de client**, sélectionnez un certificat. 

1. 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
<a name="certificate-validation"></a>

Ces instructions supposent que vous avez déjà terminé [Génération d’un certificat de client à l’aide de la console API Gateway](#generate-client-certificate) et téléchargé une copie du certificat client. Vous pouvez télécharger un certificat client en appelant la commande [https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html](https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html) de l’API REST API Gateway ou la commande [https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html) 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](https://letsencrypt.org/) 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](api-gateway-supported-certificate-authorities-for-http-endpoints.md). 

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](http://expressjs.com/), vous pouvez utiliser les [client-certificate-auth](https://www.npmjs.com/package/client-certificate-auth)modules pour authentifier les demandes des clients à l'aide de certificats codés PEM. 

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

## Rotation d’un certificat client arrivant à expiration
<a name="certificate-rotation"></a>

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 AWS Management Console
<a name="certification-rotation-console"></a>

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**.

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

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

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

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

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

1. Pour enregistrer les paramètres, choisissez **Enregistrer les modifications**.

### Faites pivoter un certificat client expirant à l'aide du AWS CLI
<a name="certificate-rotation-cli"></a>

 [Vous pouvez vérifier la date d'expiration du certificat en appelant [ClientCertificate:by-ID de l'](https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html)API REST API Gateway ou en AWS CLI commandant et en [get-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html)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 [clientcertificate:generate](https://docs.aws.amazon.com/apigateway/latest/api/API_GenerateClientCertificate.html) de l'API REST API Gateway ou en utilisant la commande de. AWS CLI [generate-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/generate-client-certificate.html) Dans ce didacticiel, nous supposons que l’ID du nouveau certificat client est `ndiqef`.

1.  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.

1.  Mettez à jour l’étape d’API pour utiliser le nouveau certificat client en appelant la commande [stage:update](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html) 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](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html).

   Si vous utilisez une WebSocket API, utilisez la commande `apigatewayv2` [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html).

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

1.  Supprimez l'ancien certificat d'API Gateway en appelant le [clientcertificate:delete](https://docs.aws.amazon.com/apigateway/latest/api/API_DeleteClientCertificate.html) de l'API REST API Gateway, en spécifiant le clientCertificateId (`a1b2c3`) de l'ancien certificat :

   ```
   DELETE /clientcertificates/a1b2c3 
   ```

   Vous pouvez également appeler la [delete-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/delete-client-certificate.html)commande :

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