Sto lavorando a un'applicazione web con una semplice API che richiede l'autenticazione. Per la mia natura applicativa, gli utenti hanno due chiavi RSA, per la firma e la crittografia dei messaggi. Il mio protocollo funziona basandosi su di esso. L'applicazione web ha accesso alle chiavi pubbliche.
Una soluzione per ottenere l'autenticazione e uccidere MITM consiste nel creare SSL tramite l'API dell'applicazione e creare un metodo di autenticazione utilizzando le chiavi dell'utente. Semplice passaggio di messaggi. Ma sto pensando ad un altro metodo ... Effettua l'autenticazione basata sulla certificazione client SSL. Avevo usato i certificati client per i progetti precedenti, ma ho qualche problema nel decidere se usarlo per questo progetto:
-
È una cattiva idea utilizzare una delle chiavi RSA dell'utente per generare un certificato per questo?
-
Esiste un server Web (come wrapper SSL) che può permettermi di estendere le funzionalità durante la negoziazione SSL con un programma esterno? Voglio dire quando l'utente invia la richiesta SSL, cerco il suo certificato in un database (a) e se viene trovato, inserisci un record in un database come ID di sessione e l'applicazione web usa questo (b). Ciò significa non solo concedere l'accesso ad alcuni utenti, ma scoprire quale utente ha effettuato l'accesso. ANSWER : Almeno nginx supporta il passaggio del certificato client ricevuto all'applicazione web. Ci sono passato.
-
Analisi delle prestazioni. Dubito dell'elevato numero di utenti e delle prestazioni di autenticazione basate su certificati, ma l'autenticazione è una parte della mia applicazione che dovrebbe essere fatta e anche l'SSL. Quale carico extra e latenza posso aspettarmi quando utilizzo i certificati client e rispetto all'utilizzo di certificati server? ANSWER : consulta la risposta di MadHatter
Grazie per i tuoi suggerimenti e scusa per il mio pessimo inglese.