Le estensioni sono solo alcuni tipi di metadati della politica allegati al certificato. Tecnicamente, non importa le estensioni, un certificato rimane la stessa cosa: un file che collega una chiave a un'identità. Le sue informazioni potrebbero essere utilizzate per qualsiasi scopo: autenticare un server, un client, firmare altri certificati, firmare email, firmare software / codice driver, ecc.
Ecco dove entrano in gioco le estensioni: dicono all'applicazione quali usi sono applicabili a questo certificato, così che quando l'applicazione incontra il certificato in un contesto non autorizzato potrebbe (o deve, a seconda se l'utilizzo è impostato su critico o no ) considera il certificato come non valido e rifiutalo.
Tuttavia, questo controllo deve essere fatto a livello di applicazione. Un'applicazione mal implementata potrebbe non controllare correttamente questi usi e accettare qualsiasi certificato in qualsiasi momento.
Inoltre, alcune cose supplementari devono essere annotate:
- Queste estensioni sono solo restrizioni. Un certificato senza estensione può essere utilizzato in qualsiasi ruolo (nessuna limitazione di utilizzo), mentre un certificato che contiene alcune estensioni è limitato all'utilizzo definito da queste estensioni,
-
Queste estensioni sono in realtà divise in due parti principali (più una solo storica):
- L'utilizzo della chiave (come "Non ripudio" nell'esempio) definisce l'utilizzo della crittografia di livello inferiore consentito per questo certificato,
- L'utilizzo della chiave estesa fornisce un utilizzo di livello superiore autorizzato per questo certificato ("Autenticazione server Web TLS" e "Autenticazione client Web TLS" nei propri esempi).
- Alcune applicazioni gestiscono anche ciò che viene chiamato Netscape Cert Type , può essere visto come il precursore degli usi della chiave estesa e raccogliere usi come "Server SSL", "Client SSL", ecc.
Tutti questi utilizzi chiave possono essere associati e utilizzati in modo complementare.
-
Alcune estensioni potrebbero essere contrassegnate come "critiche": questo flag determina in che modo un'applicazione che non riconosce / non ha implementato un'estensione specifica deve gestire il certificato. In tale situazione, se il flag "critico" è abilitato l'applicazione deve rifiutare il certificato, quando questo flag non è impostato l'applicazione potrebbe accettare ancora il certificato.
I nomi di utilizzi chiave estesi (oltre al tipo di certificato Netscape) sono piuttosto semplici da comprendere. Gli usi chiave tuttavia dipendono profondamente da come il protocollo (nel caso di una comunicazione di rete) utilizzerà i certificati. Gli usi chiave comunemente trovati per un'applicazione client / server SSL / TLS sono i seguenti:
-
Server : Firma digitale, Non ripudio, Crittografia chiave,
-
Cliente : firma digitale, crittografia chiave, crittografia dei dati.
Quindi, per rispondere alle tue domande modificate:
Does certificate with "Non Repudiation" usage allow to authenticate all clients with/without "TLS Web Client Authentication" usage?
But "TLS Web Server Authentication" without "Non Repudiation" allows to auth clients only with "TLS Web Client Authentication" usage?
L'utilizzo di "Non ripudio" dal certificato del server verrà controllato principalmente dal software client, non dal server, e non avrà alcun impatto sul modo in cui il server convaliderà i certificati del client.
L'utilizzo di
"Autenticazione client Web TLS" impedirà l'utilizzo dei certificati client in un contesto server. La sua assenza non bloccherà alcuna autenticazione. Tuttavia, se un client tenta di autenticarsi utilizzando un certificato senza questo utilizzo ma con "Autenticazione TLS Web Server" invece l'autenticazione sarà probabilmente rifiutata dal server.