Come identificare in modo affidabile un certificato come certificato radice in una catena [duplicato]

1

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).

    
posta Thomas 11.08.2016 - 18:25
fonte

2 risposte

1

Controlla semplicemente se Issuer e Subject campi per l'uguaglianza. Se sono uguali, il certificato è autofirmato e rappresenta il certificato di origine. In caso contrario, il certificato è certificato intermedio. Naturalmente, la chiave pubblica nel certificato di root deve convalidare la propria firma.

Modifica per seguire la modifica OP:

The question is which certificate attributes or extensions I can use in which fashion to reliably identify a root CA certificate in a given chain.

devi verificare che l'attributo isCA dell'estensione certificato Basic Constraints sia impostato su True in tutti i certificati CA. E questa estensione DEVE essere contrassegnata come critica.

What happens if I create a root certificate and a derived intermediate CA certificate and, in the latter, just choose the subject equal to the issuer?

ci sono due risultati:

The authority key identifier may well correctly point to the key identifier of the root CA

creerai un ciclo nella catena che viene rilevato dalla maggior parte dei motori di concatenazione dei certificati. In caso contrario, il certificato non farà parte della catena con certificato root e intermedio.

    
risposta data 11.08.2016 - 18:39
fonte
0

Devi controllare due condizioni:

  1. L'emittente è uguale all'oggetto
  2. Il certificato è attendibile

La seconda condizione è necessaria perché potresti benissimo passare i certificati creati da una CA casuale.

    
risposta data 11.08.2016 - 19:00
fonte

Leggi altre domande sui tag