Identificazione del cliente mediante certificati client

7

Ho il seguente scenario:

  • Diversi server embedded indipendenti (Linux / ARM / lighttpd)
  • Diversi dispositivi di controllo indipendenti (win32 / iOS / Android)
  • Ogni server dovrebbe avere almeno un dispositivo di controllo
  • Ogni dispositivo di controllo può controllare uno o più server
  • Nessuno ma i dispositivi di controllo dovrebbero essere in grado di contattare i server

Comprendo che potrei utilizzare i certificati client per garantire "l'associazione dispositivo / server", ma non sono sicuro se possibile e (eventualmente) come configurare i miei sistemi per soddisfare i seguenti requisiti aggiuntivi:

  1. Installazione del certificato client senza problemi: voglio dire che vorrei avviare una procedura automatica sul server (possibilmente tramite pulsante fisico) che creerà e distribuirò un certificato client specifico (qualcosa di simile a "Configurazione protetta Wi-Fi" ").
  2. Creazione di certificati basati su ruoli: ogni dispositivo di controllo dovrebbe avere un "ruolo", nel senso che può eseguire un insieme definito di operazioni sul server; essenzialmente ho bisogno solo di incorporare alcuni dati nel certificato al momento della creazione.
  3. I certificati client dovrebbero essere in scadenza e revocabili (penso che questo sia standard, ma deve essere consentito-per la creazione del certificato stesso).

La vera domanda è come impostare (1), dove ho poca idea. Ho cercato su Internet, ma ho trovato solo il modo "normale" (generare cert, auto-sign, importare manualmente nel browser) che è modo troppo complesso per i miei clienti :(; speravo di essere in grado di generare un URL (o stampare un Qr) che, inserito sul dispositivo di controllo, configurerebbe "automagicamente" il suo browser (eventualmente con una semplice conferma "OK"). È possibile (o qualcosa di equivalente a prova di stupidità), in qualche modo?

Consigli e commenti sulle altre questioni sono i benvenuti (ovviamente!)

NOTA: non ho bisogno di sicurezza a prova di banca, solo un ragionevole compromesso; il focus è su quanto posso ottenere "senza disturbare gli utenti" (inserendo una password è considerato fastidioso, sfortunatamente).

    
posta ZioByte 21.12.2015 - 10:33
fonte

1 risposta

2

Recentemente ho scavato nel campo Certificato, e so che è passato un mese da quando hai chiesto, ma spero che questo ti aiuti in qualche modo.

Per dare a ciascuno dei tuoi clienti un certificato, in pratica avrai bisogno di un server con il proprio certificato autofirmato. Questo server "darà" ai tuoi clienti il loro nuovo certificato. Il flusso sarebbe simile a questo:

1) [FRONTEND] Il cliente genera una coppia di chiavi e invia la chiave pubblica al server, chiedendo un nuovo certificato.

2) [BACKEND] Il server genera un nuovo certificato basato sulla chiave pubblica del cliente e lo rimanda al cliente con un'intestazione specifica che indica che si tratta di un certificato.

3) [FRONTEND] Il cliente "scarica" il certificato, il browser sa che è un certificato e chiede al cliente di installarlo sul browser con un semplice clic.

Per (1), ci sono modi per farlo con un semplice clic. Per la maggior parte dei browser è possibile utilizzare il tag html "keygen", per IE purtroppo si deve usare ActiveX. Per (2), avrai bisogno di un qualche tipo di modulo di gestione della CA, ce ne sono alcuni gratuiti là fuori, come OpenCA o EJBCA.

Potrebbe essere un po 'difficile da implementare, ma fornisce un'autenticazione indiscutibile per i tuoi clienti, dal momento che stanno usando certificati firmati da te, ed è davvero piuttosto facile da parte dei clienti, non ha bisogno di più di un 2 o 3 campi e due clic.

    
risposta data 29.01.2016 - 16:57
fonte

Leggi altre domande sui tag