Un certificato è firmato dalla CA che lo emette. Un certificato autofirmato, per definizione, non viene emesso da una CA (o è la propria CA, se si desidera visualizzarla in questo modo).
Un certificato può avere alimentazione CA , ovvero essere attendibile per firmare altri certificati o meno, a seconda che contenga un'estensione Basic Constraints
con il flag cA
impostato su TRUE
( cf lo standard ).
Quello che succede è il seguente: quando alcune applicazioni vogliono convalidare un certificato (es. un browser Web che vuole fare SSL con un server e appena ottenuto il certificato del server), vorranno costruire una catena di certificati che inizia con un "trust anchor" (uno dei certificati nel suo archivio di certificati "trusted root") e termina con il certificato da convalidare (chiamato "EE" come "end-entity"). Le regole esatte per la validità di una catena sono intricate e complete di dettagli; Ai fini di questa risposta, limitiamoci a queste condizioni necessarie:
- La catena deve iniziare con un'ancora di fiducia.
- Ogni certificato è firmato dal certificato precedente nella catena (ad esempio, la firma su ciascun certificato deve essere verificata relativamente alla chiave pubblica come è stata memorizzata nel certificato precedente).
- Ogni certificato eccetto l'entità finale ha un'estensione
Basic Constraints
con il flag cA
impostato su TRUE
.
Quindi un certificato CA autofirmato ma non CA, quando usato come ancoraggio sicuro, sarà accettato come certificato di entità finale (cioè in una catena ridotta esattamente a quel certificato) ma non altrimenti. Questo è il caso normale. Quando, come utente del browser, desideri accettare un determinato certificato autofirmato come valido, in realtà dici al tuo browser che il certificato autofirmato dovrebbe diventare un'ancora di sicurezza, ma sicuramente non vuoi affidarti a quel certificato per emettere altri certificati con altri nomi! Vuoi affidarti a solo per autenticare un sito specifico.
Come al solito, i dettagli possono variare - non tutti i browser reagiscono nello stesso identico modo. Ma i concetti chiave rimangono:
- Un certificato autofirmato vive al di fuori del mondo CA: non è emesso da una CA.
- Un client (browser) utilizza trust anchors come base per ciò che si fida.
- Un certificato autofirmato per un server Web, di solito, dovrebbe essere considerato attendibile (se non del tutto) solo per quel server, ovvero aggiunto come un'ancora di trust, ma non taggato come "valido per l'emissione certificati".
Quando una catena viene ridotta a un singolo certificato, vale a dire che l'entità finale è anche l'ancoraggio sicuro, allora questo è noto come trust diretto : un certificato specifico è considerato affidabile già conosciuto, esattamente , invece di essere considerato affidabile in virtù del rilascio da parte di una CA fidata.