Fidati di una CA non root in OpenSSL

2

È possibile che OpenSSL consideri attendibile una CA non radice in modo tale che un certificato firmato da tale CA non radice possa essere correttamente verificato? Ho notato che il comportamento predefinito di OpenSSL consiste nel verificare i certificati solo quando è possibile creare una catena completa, fino a una CA radice autofirmata. Può essere sovrascritto?

In particolare, non voglio che la root sia nel file CA.

    
posta Justin Gerace 20.12.2013 - 23:11
fonte

4 risposte

2

Le versioni recenti (presumibilmente 1.0.2 e successive) di OpenSSL supportano l'opzione -partial_chain . link

Riguardo al caso d'uso, è ad esempio utilizzabile nella cucitura di punti OCSP (cioè il comando openssl ocsp ), nel qual caso non vi è alcun merito nel controllare lo stato della CA intermedia.

    
risposta data 07.01.2015 - 02:46
fonte
1

OpenSSL supporta le opzioni CAfile o CApath per i certificati CA. Penso che sia necessario chiarire cosa intendi con 'CA non root', anche se questo non ha davvero senso a meno che tu non stia facendo riferimento a un certificato intermedio. E l'idea di fidarsi di un intermedio come se fosse una radice ha ancora meno senso se non si desidera aggiungere la radice che firma quella intermedia al CAfile che si sta utilizzando.

    
risposta data 20.12.2013 - 23:32
fonte
0

Is it possible to have OpenSSL trust a non-root CA such that a certificate signed by that non-root CA can be properly verified?

Sì. È possibile specificare qualsiasi CA che si desidera come autorità valida, utilizzando le impostazioni CApath o CAfile.

I've noticed that the default behavior for OpenSSL is to only verify certificates when it can build a complete chain, up to a self-signed root CA. Can this be overridden?

Se la CA non ha firmato direttamente il certificato di fine, allora sì, OpenSSL verificherà solo se può costruire una catena. Senza una catena, non vi è alcuna connessione dimostrabile e nessuna verifica. Non sono sicuro di cosa stia esattamente suggerendo quando dici "Sovrascritto".

I specifically do not want the root to be in the CAfile.

Puoi usare CApath, ma queste sono le tue uniche due opzioni. È un po 'assurdo dire "Voglio specificare la radice, ma nello specifico non voglio specificare la radice".

Il fatto che tu non voglia usare CAfile per specificare la CA significa che non capisco cosa stai cercando di fare, o non capisci cosa stai cercando di fare. Sentiti libero di spiegarti meglio il tuo scenario in modo da poterti aiutare meglio.

    
risposta data 19.02.2014 - 19:32
fonte
-1

Woah. OK, quindi questa non è una best practice raccomandata. Ho dovuto farlo, ma in genere è stata una cavalla notturna.

Prima - se non puoi fidarti della root, non puoi fidarti della catena di CA. La radice è la fonte della fiducia, quindi se c'è un motivo per non includere la radice, si ha un problema con il concetto base su cui è costruita la PKI - che c'è un'autorità finale così tanto fidata che tutti possono solo credere in esso - e questa è la radice.

Avanti - se il tuo caso è che ti fidi di alcune CA nella gerarchia ma non di altre, hai un punto valido. Ad esempio, in un caso che ha 2 CA - una per l'emissione di certificati umani e una per non umani (come certificati server SSL), è giusto che il tuo sito possa solo fornire l'accesso a un percorso. Ciò non rende l'altra CA non valida, ma non è giusta per il caso in questione.

In genere ciò si riduce alla differenza tra autenticazione e autorizzazione. Se si desidera solo le credenziali dalla CA1 intermedia, ciò non significa in questo caso che le credenziali della CA2 intermedia non siano valide, quindi sono autenticabili . Ma non sono autorizzati per questo caso d'uso.

Nell'interesse dell'eleganza ...

Molti negozi di fiducia non sono costruiti per questo caso d'uso, ma alcuni lo sono. La vera risposta è che il modo elegante è quello di avere un ulteriore codice di controllo di controllo dell'accesso costruito come un gancio per il caso d'uso di accesso che esegue il controllo che si desidera assicurarsi che tutti gli utenti provengano da CA1 e non CA2. È spesso considerato un caso d'uso specializzato.

Il modo meno elegante ...

Non l'ho provato con Open SSL - ma potresti essere in grado di simularlo - inserire la CA intermedia che desideri e la root nel trust store. Quindi assicurati che tutte le richieste dei tuoi clienti includano solo i certificati sotto quella CA intermedia.

Il codice Open SSL potrebbe essere in grado di mapparlo da lì. Possono essere i sistemi, in particolare quando il client invia una catena parziale.

Se non riesci a controllare il cliente, potresti essere o meno sfortunato. Non conosco alcun sistema che pianificasse per te di NON fidarsi esplicitamente della radice ... è contrario alla premessa di base.

    
risposta data 21.12.2013 - 00:17
fonte

Leggi altre domande sui tag