Best practice per la progettazione di catene di certificati TLS mutuo-auth?

4

Sto cercando consigli di best practice per costruire un sistema con autenticazione reciproca usando certificati. Vorrei creare un sistema con più dispositivi IoT che segnalano dati a un server Web, in cui sia il server che il client devono autenticarsi a vicenda. Stavo pensando di utilizzare un'autorità di certificazione radice (personale) e un'autorità di certificazione intermedia per il certificato del server e un'altra per i certificati client.

La CA radice firma le CA intermedie (x2), una firma i certificati server, una firma i certificati client.

In futuro, la CA di origine potrebbe firmare un altro intermediario indipendente.

Ha senso? O è meglio implementare CA radice separate per il server e i client?

Dato che userò certificati autofirmati, per verificare da un lato l'altro, devo fornire a tutti il certificato di root? o cert intermedio? Cosa succede se uno dei dispositivi viene compromesso? (Revoca?)

Ci scusiamo per più domande ma le domande di follow-up sono relative alla domanda principale. Come dovrebbe essere progettata la catena di certificazione? Quali approcci sono più sicuri?

    
posta Genom 27.08.2018 - 23:02
fonte

2 risposte

1

Vorrei implementare una semplice gerarchia a due livelli con una singola CA principale e una singola emittente che emetterà certificati per entrambi, client e server. A meno che non esistano requisiti specifici, non è necessario distribuire più root o anche CA intermedie. Mantieni semplice il livello 2.

do I have to provide root cert to all?

Sì. I client dovranno fidarsi della tua root per autenticare il server. Il server dovrà fidarsi della tua root per autenticare i client.

What happens if one of the devices get compromised? (Revoking?)

Sì. Tuttavia, la revoca potrebbe avere una grande latenza. Pertanto potrebbe essere ragionevole avere un database locale per registrare tutti i client e le loro informazioni di base. Se il dispositivo viene compromesso, aggiorna il database (disabilita l'account del dispositivo) per impedire temporaneamente il collegamento del dispositivo al server fino a quando il problema non viene risolto.

    
risposta data 27.08.2018 - 23:27
fonte
2

Non so se esiste un singolo set di "best practice" per fare client-auth poiché dipende molto dai dettagli del proprio ambiente. Probabilmente puoi trovare le migliori pratiche per configurare un'autorità di certificazione per l'autenticazione del client VPN, se è abbastanza vicino.

Posso darti una lista di domande a cui dovresti pensare nel contesto della tua applicazione. Nel risolvere questi problemi, la domanda sulla gerarchia CA può essere risolta per te.

  • C'è qualcosa che distingue un client da un server? Sarebbe male se qualcuno potesse creare un server falso usando un certificato cliente e ottenere altri client per connettersi ad esso. Esistono diversi modi per risolvere questo problema: è possibile utilizzare CA radice diverse per client e server, anche se potrebbe essere più semplice inserire un "I am a client" e "I am a server" Utilizzo chiavi estese nel certificato. Nota che i metodi più intelligenti richiederanno di scrivere codice di convalida del certificato personalizzato sul client e / o sui componenti del server.

  • Come funziona la revoca? Se un client / server ha bisogno di revocare il certificato, chi viene a contatto? Come sapranno i server / clienti che è stato revocato? Con che velocità i server / client sanno che è stato revocato?

  • Come si aggiornano i certificati client quando scadono? (non tirare un Tesla , completo thread Twitter qui )

  • Come stai proteggendo le chiavi private delle CA? Vengono memorizzati su una sorta di token hardware? Cosa succede se le macchine che ospitano le CA scendono? (temporaneamente, bloccando le informazioni di revoca dalla pubblicazione o permanentemente, perdendo le chiavi private della CA)

Fondamentalmente, penso che la configurazione della gerarchia della CA finisca per essere un effetto collaterale di come si affrontano le altre considerazioni sulla sicurezza;)

    
risposta data 28.08.2018 - 00:00
fonte

Leggi altre domande sui tag