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.
Scénarios de révocation avancés
Pour des exigences de révocation de certificats plus complexes, envisagez les configurations supplémentaires suivantes :
Rubriques
Convertir les listes de révocation de certificats (CRL) au format KeyValueStore
Si vous avez un fichier de liste de révocation de certificats (CRL), vous pouvez le convertir au format KeyValueStore JSON à l'aide d'OpenSSL et de jq :
Convertir CRL en format KeyValueStore
Extrayez les numéros de série du fichier CRL :
openssl crl -text -noout -in rfc5280_CRL.crl | \ awk '/Serial Number:/ {print $3}' | \ cut -d'=' -f2 | \ sed 's/../&:/g;s/:$//' >> serialnumbers.txt
Convertissez les numéros de série au format KeyValueStore JSON :
jq -R -s 'split("\n") | map(select(length > 0)) | {data: map({"key": ., "value": ""})}' \ serialnumbers.txt >> serialnumbers_kvs.json
Téléchargez le fichier formaté sur S3 et créez-le KeyValueStore comme décrit à l'étape 1.
Gérez plusieurs autorités de certification
Lorsque vous avez TrustStore plusieurs autorités de certification (CAs), incluez les informations relatives à l'émetteur dans vos KeyValueStore clés afin d'éviter les conflits entre des certificats provenant de différentes entités CAs susceptibles de porter le même numéro de série.
Pour les scénarios multi-CA, utilisez une combinaison du SHA1 hachage de l'émetteur et du numéro de série comme clé :
import cf from 'cloudfront'; async function connectionHandler(connection) { const kvsHandle = cf.kvs(); const clientCert = connection.clientCertInfo; // Create composite key with issuer hash and serial number const issuer = clientCert.issuer.replace(/[^a-zA-Z0-9]/g, '').substring(0, 20); const serialno = clientCert.serialNumber; const compositeKey = `${issuer}_${serialno}`; const cert_revoked = await kvsHandle.exists(compositeKey); if (cert_revoked) { console.log(`Blocking revoked cert: ${serialno} from issuer: ${issuer}`); connection.deny(); } else { connection.allow(); } }
Note
L'utilisation de l'identifiant de l'émetteur et du numéro de série crée des clés plus longues, ce qui peut réduire le nombre total d'entrées que vous pouvez stocker dans le KeyValueStore.
Ajouter des données personnalisées aux journaux de connexion
Les fonctions de connexion peuvent ajouter des données personnalisées aux journaux de CloudFront connexion à l'aide de logCustomData cette méthode. Cela vous permet d'inclure les résultats du contrôle de révocation, les informations de certificat ou d'autres données pertinentes dans vos journaux.
async function connectionHandler(connection) { const kvsHandle = cf.kvs(); const clientSerialNumber = connection.clientCertInfo.serialNumber; const serialNumberExistsInKvs = await kvsHandle.exists(clientSerialNumber); if (serialNumberExistsInKvs) { // Log revocation details to connection logs connection.logCustomData(`REVOKED:${clientSerialNumber}:DENIED`); console.log("Connection denied - certificate revoked"); return connection.deny(); } // Log successful validation connection.logCustomData(`VALID:${clientSerialNumber}:ALLOWED`); console.log("Connection allowed"); return connection.allow(); }
Les données personnalisées sont limitées à 800 octets de texte UTF-8 valide. Si vous dépassez cette limite, CloudFront tronque les données à la limite UTF-8 valide la plus proche.
Note
L'enregistrement personnalisé des données ne fonctionne que lorsque les journaux de connexion sont activés pour votre distribution. Si les journaux de connexion ne sont pas configurés, la logCustomData méthode est interdite.
Gérer les mises à jour de la CRL
Les autorités de certification peuvent délivrer deux types de CRLs :
-
Complet CRLs : contient une liste complète de tous les certificats révoqués
-
Delta CRLs : liste uniquement les certificats révoqués depuis la dernière CRL complète
Pour les mises à jour complètes de la CRL, créez-en une nouvelle KeyValueStore avec les données mises à jour et redirigez l'association de la fonction de connexion vers la nouvelle KeyValueStore. Cette approche est plus simple que le calcul des différences et l'exécution de mises à jour incrémentielles.
Pour les mises à jour de la CRL delta, utilisez la commande update-keys pour ajouter de nouveaux certificats révoqués aux certificats existants : KeyValueStore
aws cloudfront update-key-value-store \ --name "revoked-serials-kvs" \ --if-match "current-etag" \ --put file://delta-revoked-serials.json
KeyValueStore Capacité du plan
KeyValueStore a une limite de taille de 5 Mo et prend en charge jusqu'à 10 millions de paires clé-valeur. Planifiez la capacité de votre liste de révocation en fonction du format de votre clé et de la taille des données :
-
Numéro de série uniquement : stockage efficace pour une vérification simple des révocations
-
Identifiant de l'émetteur et numéro de série : clés plus longues pour les environnements multi-CA
Pour les listes de révocation volumineuses, envisagez de mettre en œuvre une approche à plusieurs niveaux dans le cadre de laquelle vous maintenez des listes distinctes KeyValueStores pour les différentes catégories de certificats ou périodes.