Si supponga di avere una catena di certificati (X509 v3) inviata per la convalida. La catena inviata all'utente può includere o meno il certificato della CA radice. C'è un modo affidabile per scoprire se questo è il caso?
Ovviamente, solo il certificato nella parte superiore della gerarchia potrebbe essere il certificato della CA principale, ma come dovrei controllarlo? Ho trovato un controllo per l'uguaglianza tra emittente e soggetto, e questo sembra funzionare bene per tutti i casi che ho trovato finora, ma non sono sicuro che sia infallibile.
Modifica: non si tratta di un controllo manuale o di quale strumento utilizzare, si tratta di un controllo programmatico. Quindi usare openSSl per eseguire i controlli (come suggerito in una richiesta di 'possibile duplicazione') non è un'opzione. La domanda è quali attributi di certificato o estensioni posso usare in quale modo per identificare in modo affidabile un certificato CA radice in una determinata catena.
Per rendere la domanda ancora più precisa: ho suggerito di verificare se subject==issuer
dall'inizio. La domanda è se questo è un approccio infallibile. Quindi è possibile fare affidamento sul fatto che questo è vero se e solo se si tratta di un certificato di root? Cosa succede se creo un certificato radice e un certificato CA intermedio derivato e, in quest'ultimo, scelgo il soggetto uguale all'emittente? Ciò comporterà un certificato valido? (L'identificatore della chiave di autorizzazione potrebbe indicare correttamente l'identificatore della chiave della CA principale).
(Si noti che ho non chiedo come controllare se devo fidarmi della catena. Voglio sapere come identificare in modo affidabile un certificato CA radice in una catena).