Aggiunta di dati personalizzati nel certificato X.509

7

Sto usando SSL con l'autenticazione del client. Devo inviare alcuni dati extra durante l'invio del certificato client? Posso inviarlo nel certificato? Posso usare i campi di estensione nel certificato per quello? La quantità di dati da inviare è molto piccola. Di solito un id e alcune autorizzazioni. Questo qualcosa dovrei inviare solo inizialmente. C'è un altro modo migliore?

    
posta user2315 05.09.2012 - 10:20
fonte

2 risposte

4

Anche se puoi trovare tutto ciò che puoi immaginare nelle estensioni ad hoc in un certificato, raramente è una buona idea. In particolare perché il certificato è firmato (dall'autorità di certificazione che lo ha emesso), quindi qualunque cosa tu abbia inserito nel certificato deve prima passare attraverso la CA.

I certificati riguardano l'autenticazione e questo non funziona bene con l'autorizzazione . I certificati sono entità longeve che non possono essere alterate per un capriccio; l'unico modo per "modificare" un certificato è revocarlo e emetterne uno nuovo; non solo questo deve essere fatto dalla CA, ma è un processo intrinsecamente asincrono: occorrono almeno diverse ore, più spesso diversi giorni, per propagare le informazioni di revoca con qualsiasi tipo di affidabilità (e alcuni client non verificano affatto la revoca. ..). Per qualsiasi cosa relativa alle autorizzazioni , vuoi un sistema che reagisca rapidamente, perché quando vuoi rimuovere un'autorizzazione di accesso, devi rimuoverlo ora , non prossimo settimana .

Se, nel tuo protocollo, il server ha qualcosa da dire al client, allora sembra più appropriato inviare i dati nel tunnel SSL, dopo l'handshake, come parte del protocollo interno (nello stesso modo in cui HTTPS è HTTP all'interno di un tunnel SSL).

    
risposta data 05.09.2012 - 13:24
fonte
3

Come dice @Tom Leek, lo scopo principale del certificato a chiave pubblica (PKC) del client è l'autenticazione. Nel mondo PKIX esiste il concetto di Certificato di attributo ; questi sono in genere certificati di breve durata che possono essere utilizzati a fini di autorizzazione. Esiste anche SAML che supporta lo scambio di informazioni di autorizzazione. Tuttavia, questi sono protocolli complicati e richiedono un bel po 'di configurazione. Se si tratta di una semplice app server client, forse è possibile memorizzare le autorizzazioni dell'utente in modo sicuro sul server. Una volta che il PKC è stato utilizzato dal server per autenticare il client, puoi cercare le loro autorizzazioni.

    
risposta data 05.09.2012 - 14:25
fonte

Leggi altre domande sui tag