Supponiamo che tu abbia una coppia client / server che vuole impostare una connessione sicura usando certificati X509 v3 e crittografia asimmetrica.
Il client invia una catena di certificati (diciamo CA principale: C1 , CA intermedio: C2 e certificato client: C3 ) e il server deve convalidare la catena (e poi, ovviamente, vice versa).
Fino a stamattina ho capito che il server deve sapere (almeno) C1 e averlo in un negozio fidato, l'idea è che la CA radice è l'entità di cui tutti i partecipanti sono disposti a fidarsi.
Dopo aver incontrato esempi in cui questo viene gestito in modo diverso ora sono confuso e ho qualche dubbio.
In un esempio ho trovato che il server aveva solo C3 (o solo C2) nel suo trust store e accettava volentieri la richiesta di connessione contenente il resto della catena (in realtà l'intera catena) dal client.
Quindi mi piacerebbe sapere se questo è un approccio che
- può essere considerato sicuro?
- è in accordo con gli standard pertinenti?
(Naturalmente capisco che sia, in qualche modo, fino all'amministratore del server decidere quali parti sono affidabili. La domanda è rivolta a uno sviluppatore che dovrebbe implementare la convalida).