Estensioni certificato: vincoli specifici

0

Ho una domanda sulle estensioni del certificato e su quale estensione specifica dovrei usare nella mia situazione.

Il problema è il seguente: ho una CA e voglio che la CA emetta il certificato solo per un tipo specifico di servizio. Ad esempio, immagina un'applicazione che può fare 4 diversi tipi di azioni (diciamo azione A, azione B, C e D). Per ogni azione che l'applicazione deve autenticare. Supponiamo ora che alcune applicazioni vogliano fare solo azioni A e C. Voglio emettere un certificato per questa app che specifica solo questo due tipi di azioni e l'app non può usare questo certificato per autenticare l'azione D.

E non ha solo le applicazioni. Puoi visualizzare qui gli utenti.

Mi rendo conto che posso risolvere questo problema con 4 diversi tipi di CA per ogni tipo di servizio, ma questo sembra essere maldestro. Ho studiato le estensioni dei certificati ma non ne ho trovato uno che si adatta alle mie esigenze. E ho anche letto dei certificati attribuiti che potrebbero risolvere questa situazione, ma ho anche sentito che non sono così comuni, quindi non ne sono sicuro.

Devo utilizzare certificati attribuiti o mi manca qualche soluzione semplice?

Grazie!

    
posta Mumbar 04.04.2014 - 16:53
fonte

1 risposta

1

Ci sono principalmente due modi principali, uno dei quali con estensioni di certificato e uno dei quali è una cattiva idea. Questi due sono gli stessi ...

In un certificato , puoi codificare "usi" come parte del Extended Key Usage estensione. Nella tua terminologia, definiresti alcuni OID per le azioni A, B, C e D e inserirai solo OID per A e C nel certificato.

Ciò che non va bene è che tu stai confondendo autenticazione e autorizzazione in un certificato e che i certificati non sono validi all'autorizzazione. Per essere chiari:

  • Autenticazione riguarda l'accertamento di chi sta chiamando. Ecco a cosa servono i certificati: legano una identità a una chiave pubblica e il protocollo di trasporto (es. SSL) assicura che il chiamante controlli la chiave privata corrispondente a quella pubblica chiave.

  • L'autorizzazione riguarda la decisione su cosa consentire a un determinato individuo di fare. Normalmente avviene l'autenticazione dopo .

I certificati non sono validi per le attività di autorizzazione, per una serie di motivi, in particolare perché l'unico meccanismo che può "annullare" un certificato è revoca , che è asincrono (può richiedere diverse ore o anche giorni per una revoca da propagare tramite CRL) e tutto-o-niente (non è possibile revocare parzialmente un certificato). Nella tua situazione, ciò significherebbe che se vuoi bloccare un'applicazione specifica, il blocco richiederà ore per essere efficace; e non è possibile rimuovere il diritto di eseguire l'azione C senza rimuovere il diritto di eseguire l'azione A. Allo stesso modo, se si desidera concedere un nuovo diritto di accesso a un client, è necessario emettere un nuovo certificato e inviarlo al client; se il client memorizza i suoi certificati su un dispositivo (ad esempio una smart card), ciò può aumentare i problemi di usabilità (un PC di base può usare smart card fuori dalla scatola, ma scrivere nella smart card richiede un software specifico).

Per questi motivi, dovresti davvero usare i certificati solo per l'autenticazione. In un contesto client / server, il certificato viene utilizzato dal client per dimostrare la propria identità al server, ma l'autorizzazione è una decisione puramente lato server. Non è necessario che i dati di autorizzazione si verifichino mai sul lato client.

In un mondo di Microsoft / Active Directory, l'autorizzazione sarebbe incorporata da ACL e appartenenze ai gruppi sui server AD. I certificati vengono utilizzati per associare il richiedente a un account, ma i diritti concessi a tale account vengono mantenuti nel server AD, non nel certificato.

    
risposta data 04.04.2014 - 17:09
fonte

Leggi altre domande sui tag