Revoca tramite CloudFront Connection Function e KVS - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Revoca tramite CloudFront Connection Function e KVS

È possibile implementare il controllo della revoca dei certificati per l'autenticazione TLS reciproca combinando CloudFront Connection Functions con. KeyValueStore Questo approccio fornisce un meccanismo di revoca dei certificati scalabile e in tempo reale che integra CloudFront la convalida dei certificati integrata.

Le funzioni di connessione sono JavaScript funzioni che vengono eseguite durante la creazione della connessione TLS nelle sedi CloudFront periferiche e consentono di implementare una logica di convalida dei certificati personalizzata per l'autenticazione MTLS. Per informazioni dettagliate sulle funzioni di connessione, vedere. Associare una funzione di CloudFront connessione

Come funziona la revoca dei certificati con Connection Functions

CloudFrontla convalida standard dei certificati verifica la catena, la firma e la scadenza del certificato, ma non include il controllo integrato della revoca del certificato. Utilizzando Connection Functions, è possibile implementare un controllo di revoca personalizzato durante l'handshake TLS.

Il processo di revoca del certificato funziona come segue:

  1. Memorizza i numeri di serie dei certificati revocati in un. CloudFront KeyValueStore

  2. Quando un client presenta un certificato, viene richiamata la funzione di connessione.

  3. La funzione confronta il numero di serie del certificato con il KeyValueStore.

  4. Se il numero di serie viene trovato nell'archivio, il certificato viene revocato.

  5. La tua funzione nega la connessione per i certificati revocati.

Questo approccio fornisce il controllo near-real-time delle revoche attraverso la rete CloudFront perimetrale globale.

Configurazione KeyValueStore per i certificati revocati

Innanzitutto, crea un file KeyValueStore per memorizzare i numeri di serie dei certificati revocati:

Per creare una KeyValueStore (Console)

  1. Accedi a Console di gestione AWS e apri la CloudFront console all'indirizzohttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Nel riquadro di navigazione, scegli Key value stores.

  3. Scegli Crea archivio di valori chiave.

  4. Inserisci un nome per il tuo archivio di valori chiave (ad esempio, certificati revocati).

  5. (Facoltativo) Aggiungi una descrizione.

  6. Scegli Crea archivio di valori chiave.

Per creare una KeyValueStore (AWS CLI)

L'esempio seguente mostra come creare un KeyValueStore:

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

Importa i numeri di serie dei certificati revocati

Dopo aver creato un KeyValueStore, devi importare i numeri di serie dei certificati revocati:

Preparare i dati di revoca

Crea un file JSON con i numeri di serie del certificato revocato:

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

Importazione da S3

  1. Carica il file JSON in un bucket S3

  2. Importa il file su: 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" }'

Crea una funzione di connessione per il controllo delle revoce

Crea una funzione di connessione che confronti i numeri di serie dei certificati con i tuoi KeyValueStore:

Esempio di codice della funzione di connessione

L'esempio seguente mostra una funzione di connessione che esegue il controllo della revoca dei certificati:

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(); } }

Per creare la funzione di connessione (AWS CLI)

L'esempio seguente mostra come creare una funzione di connessione con KeyValueStore associazione:

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

Associate la funzione alla vostra distribuzione

Dopo aver creato e pubblicato la tua Connection Function, associala alla tua CloudFront distribuzione abilitata per MTLS come descritto nella sezione. Associare una funzione di CloudFront connessione