In "puro X.509", non importa se un'estensione è critica o meno, perché le implementazioni conformi devono onorare le estensioni che riconoscono, siano esse contrassegnate come critiche o meno. Il flag "critico" è per le estensioni che sono non standard: si rende critica tale estensione se è importante per la sicurezza (implementazioni che non comprendono l'estensione dovrebbe rifiutare il certificato) o non critica altrimenti (le implementazioni che non comprendono l'estensione possono quindi ignorarlo tranquillamente).
C'è una leggera eccezione a questa regola, con l'estensione CRL Distribution Points
. Ha due scopi: documentare da dove può essere scaricato CRL e implementare la segmentazione dell'ambito . Quest'ultimo ruolo è attivo solo quando l'estensione è critica. Quando l'estensione è critica, si può ritenere che un CRL copra il certificato (ossia che sia in grado di dire qualcosa sul suo stato di revoca) solo se il CRL contiene un'estensione Issuing Distribution Point
, con un "punto di distribuzione" che corrisponde a uno di quelli specificati nell'estensione CRL Distribution Point
nel certificato. Quando l'estensione non è critica, l'estensione serve solo nel suo ruolo di documentazione.
In pratica , renderete le estensioni critiche o meno a seconda che possano essere ignorate senza perforare un buco troppo grande nell'intera sicurezza, e anche a seconda se rendere l'estensione critica indurrà implementazioni per rifiutare il certificato per mancanza di supporto. Ad esempio, se si utilizza un'estensione critica Name Constraints
, si rischia il rifiuto incondizionato da OpenSSL (le versioni precedenti alla 1.0, che è piuttosto recente, non la supportano); ma se lo rendi non critico, allora lo stesso OpenSSL lo ignorerà . L'estensione Name Constraints
è un caso tipico di un'estensione che non può essere ignorata in modo sicuro e pertanto dovrebbe sempre essere contrassegnata come critica (ma ne rendono problematico l'utilizzo).
RFC 5280 elenca, per ogni estensione di certificato, se una CA conforme deve rendere l'estensione critica o meno. Questi sono requisiti sulla CA e non sui validatori; un sistema che convalida un certificato non deve rifiutarlo sulla base del fatto che include un'estensione critica Subject Key Identifier
, anche se la RFC 5280 dice (sezione 4.2.1.2):
Conforming CAs MUST mark this extension as non-critical.
Vedi la RFC per i dettagli su ogni estensione: queste sono le linee guida su come dovrebbe comportarsi la tua CA. Ad esempio, Key Usage
è un "DOVREBBE essere critico", Basic Constraints
è un "PU be essere critico", Name Constraints
è un "DEVE essere critico", e così via ... Se segui queste regole, la tua sicurezza andrà bene (ma potrebbe essere necessario apportare alcune modifiche per l'interoperabilità).