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à.
Scenari di revoca avanzati
Per requisiti di revoca dei certificati più complessi, considera queste configurazioni aggiuntive:
Argomenti
Converti gli elenchi di revoca dei certificati (CRL) in formato KeyValueStore
Se hai un file Certificate Revocation List (CRL), puoi convertirlo in formato KeyValueStore JSON usando OpenSSL e jq:
Converti CRL in formato KeyValueStore
Estrai i numeri di serie dal file CRL:
openssl crl -text -noout -in rfc5280_CRL.crl | \ awk '/Serial Number:/ {print $3}' | \ cut -d'=' -f2 | \ sed 's/../&:/g;s/:$//' >> serialnumbers.txt
Converti i numeri di serie in formato KeyValueStore JSON:
jq -R -s 'split("\n") | map(select(length > 0)) | {data: map({"key": ., "value": ""})}' \ serialnumbers.txt >> serialnumbers_kvs.json
Carica il file formattato in S3 e crealo KeyValueStore come descritto nel passaggio 1.
Gestisci più autorità di certificazione
Se hai TrustStore più autorità di certificazione (CA), includi le informazioni sull'emittente nelle tue KeyValueStore chiavi per evitare conflitti tra certificati di diverse CA che potrebbero avere lo stesso numero di serie.
Per gli scenari con più CA, utilizza una combinazione dell'hash SHA1 dell'emittente e del numero di serie come chiave:
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(); } }
Nota
L'uso dell'identificatore dell'emittente + del numero di serie crea chiavi più lunghe, il che può ridurre il numero totale di voci che è possibile memorizzare nel. KeyValueStore
Aggiungi dati personalizzati ai log di connessione
Le funzioni di connessione possono aggiungere dati personalizzati ai log di CloudFront connessione utilizzando il CustomData metodo log. Ciò consente di includere i risultati del controllo di revoca, le informazioni sui certificati o altri dati pertinenti nei registri.
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(); }
I dati personalizzati sono limitati a 800 byte di testo valido UTF-8 . Se si supera questo limite, CloudFront tronca i dati fino al limite valido più vicino. UTF-8
Nota
La registrazione dei dati personalizzata funziona solo quando i log di connessione sono abilitati per la distribuzione. Se i log di connessione non sono configurati, il CustomData metodo di log è vietato.
Gestisci gli aggiornamenti CRL
Le autorità di certificazione possono emettere due tipi di CRL:
-
CRL completi: contengono un elenco completo di tutti i certificati revocati
-
CRL Delta: elenca solo i certificati revocati dopo l'ultimo CRL completo
Per gli aggiornamenti completi del CRL, creane uno nuovo KeyValueStore con i dati aggiornati e reindirizza l'associazione Connection Function alla nuova. KeyValueStore Questo approccio è più semplice rispetto al calcolo delle differenze e all'esecuzione di aggiornamenti incrementali.
Per gli aggiornamenti delta CRL, usa il comando update-keys per aggiungere nuovi certificati revocati a quelli esistenti: KeyValueStore
aws cloudfront update-key-value-store \ --name "revoked-serials-kvs" \ --if-match "current-etag" \ --put file://delta-revoked-serials.json
Pianifica la capacità KeyValueStore
KeyValueStore ha un limite di 5 MB e supporta fino a 10 milioni di coppie chiave-valore. Pianifica la capacità dell'elenco di revoca in base al formato della chiave e alla dimensione dei dati:
-
Solo numero di serie: archiviazione efficiente per un semplice controllo delle revoche
-
Identificatore dell'emittente + numero di serie: chiavi più lunghe per ambienti multi-CA
Per elenchi di revoche di grandi dimensioni, prendi in considerazione l'implementazione di un approccio a più livelli in cui mantieni la separazione KeyValueStores per diverse categorie di certificati o periodi di tempo.