Révocation à l'aide de la fonction CloudFront de connexion et du KVS - Amazon CloudFront

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.

Révocation à l'aide de la fonction CloudFront de connexion et du KVS

Vous pouvez implémenter le contrôle de révocation des certificats pour l'authentification TLS mutuelle en combinant les fonctions de CloudFront connexion avec. KeyValueStore Cette approche fournit un mécanisme de révocation des certificats évolutif et en temps réel qui complète CloudFront la validation des certificats intégrée.

Les fonctions de connexion sont des JavaScript fonctions qui s'exécutent lors de l'établissement de la connexion TLS sur des sites CloudFront périphériques et vous permettent de mettre en œuvre une logique de validation de certificat personnalisée pour l'authentification MTLS. Pour des informations détaillées sur les fonctions de connexion, consultezAssocier une fonction CloudFront de connexion.

Comment fonctionne la révocation des certificats avec Connection Functions

CloudFrontla validation standard des certificats vérifie la chaîne de certificats, la signature et l'expiration, mais n'inclut pas le contrôle intégré de révocation des certificats. En utilisant les fonctions de connexion, vous pouvez implémenter un contrôle de révocation personnalisé lors de la prise de contact TLS.

Le processus de révocation des certificats se déroule comme suit :

  1. Stockez les numéros de série des certificats révoqués dans un CloudFront KeyValueStore.

  2. Lorsqu'un client présente un certificat, votre fonction de connexion est invoquée.

  3. La fonction compare le numéro de série du certificat au KeyValueStore.

  4. Si le numéro de série se trouve dans le magasin, le certificat est révoqué.

  5. Votre fonction refuse la connexion pour les certificats révoqués.

Cette approche permet de vérifier les near-real-time révocations sur CloudFront le réseau périphérique mondial.

Configuration KeyValueStore pour les certificats révoqués

Tout d'abord, créez un KeyValueStore pour stocker les numéros de série des certificats révoqués :

Pour créer une KeyValueStore (console)

  1. Connectez-vous à la CloudFront console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Dans le volet de navigation, sélectionnez Key value stores.

  3. Choisissez Créer un magasin de valeurs clés.

  4. Entrez un nom pour votre magasin de valeurs clés (par exemple, certificats révoqués).

  5. (Facultatif) Ajoutez une description.

  6. Choisissez Créer un magasin de valeurs clés.

Pour créer une KeyValueStore (AWS CLI)

L'exemple suivant montre comment créer un KeyValueStore :

aws cloudfront create-key-value-store \ --name "revoked-certificates" \ --comment "Store for revoked certificate serial numbers"

Importer les numéros de série des certificats révoqués

Après avoir créé un KeyValueStore, vous devez importer les numéros de série des certificats révoqués :

Préparer les données de révocation

Créez un fichier JSON avec les numéros de série de vos certificats révoqués :

{ "data": [ { "key": "ABC123DEF456", "value": "" }, { "key": "789XYZ012GHI", "value": "" } ] }

Importer des données depuis S3

  1. Téléchargez le fichier JSON dans un compartiment S3

  2. Importez le fichier dans votre KeyValueStore :

    aws cloudfront create-key-value-store \ --name "revoked-certificates" \ --import-source '{ "SourceType": "S3", "SourceARN": "arn:aws:s3:::amzn-s3-demo-bucket1/revoked-serials.json" }'

Créer une fonction de connexion pour vérifier les révocations

Créez une fonction de connexion qui vérifie les numéros de série des certificats par rapport à vos KeyValueStore :

Exemple de code de fonction de connexion

L'exemple suivant montre une fonction de connexion qui vérifie la révocation des certificats :

import cf from 'cloudfront'; async function connectionHandler(connection) { const kvsHandle = cf.kvs(); // Get client certificate serial number const clientSerialNumber = connection.clientCertificate.certificates.leaf.serialNumber; // Check if the serial number exists in the KeyValueStore const isRevoked = await kvsHandle.exists(clientSerialNumber.replaceAll(':', '')); if (isRevoked) { console.log(`Certificate ${clientSerialNumber} is revoked. Denying connection.`); connection.logCustomData(`REVOKED:${clientSerialNumber}`); connection.deny(); } else { console.log(`Certificate ${clientSerialNumber} is valid. Allowing connection.`); connection.allow(); } }

Pour créer la fonction de connexion (AWS CLI)

L'exemple suivant montre comment créer une fonction de connexion avec KeyValueStore association :

aws cloudfront create-connection-function \ --name "revocation-checker" \ --connection-function-config '{ "Comment": "Certificate revocation checking function", "Runtime": "cloudfront-js-2.0", "KeyValueStoreAssociations": { "Quantity": 1, "Items": [ { "KeyValueStoreARN": "arn:aws:cloudfront::123456789012:key-value-store/revoked-certificates" } ] } }' \ --connection-function-code fileb://revocation-checker.js

Associez la fonction à votre distribution

Après avoir créé et publié votre fonction de connexion, associez-la à votre CloudFront distribution compatible MTLS comme décrit dans la section. Associer une fonction CloudFront de connexion