Contesto del problema
Sto scrivendo un pezzo di middleware. Il middleware viene eseguito su un computer client. Scarica materiale da un server (utilizzando il normale SSL), decodifica il materiale utilizzando una chiave privata sul computer client e fornisce un'interfaccia standard per l'accesso a applicazioni di terze parti. Le applicazioni di terze parti prevedono un certificato SSL, anche quando sono configurate per connettere il mio middleware su localhost
. Non voglio che i miei utenti debbano fare clic sulle eccezioni di sicurezza, e in questi giorni non tutte le applicazioni consentono di fare eccezioni di sicurezza.
Pertanto, dopo l'installazione la mia applicazione deve supportare una connessione SSL senza che l'utente debba combattere contro un certificato autofirmato, ma ovviamente senza aprire l'utente agli attacchi MITM.
Soluzione proposta
Questo è il piano migliore che ho adesso per il processo di installazione del client:
- Genera una CA localmente
- Genera un certificato localmente per il dominio
localhost
- Utilizza la CA per firmare il certificato
- elimina il file .key dalla CA in modo che non possa mai essere riutilizzato
- installa il file .cert CA nell'elenco di CA attendibili del sistema
Domanda
- Ci sono dei buchi di sicurezza in questo piano?
- Questa strategia è in uso altrove?
- C'è un modo migliore per affrontare il problema?
Chiarimento
Vorrei essere molto chiaro, il server ha un certificato SSL. Quando il middleware parla al server, utilizza SSL. Questo non è in discussione. È la connessione tra il client di terze parti e il middleware (entrambi sul computer client) in questione.
Che cosa deve funzionare: Ho bisogno di client di terze parti per connettermi al mio middleware come se fosse un server remoto in una fasion senza interruzioni. Se il client di terze parti fosse un browser, sembrerebbe una piccola icona di blocco verde accanto a https. L'utente non deve accettare eccezioni di sicurezza. Alcuni client di terze parti non consentono affatto eccezioni di sicurezza, con conseguente rifiuto totale dei certificati autofirmati. Ovviamente è odioso per i miei utenti.
Quello che sto cercando di proteggere da: non voglio aggiungere una CA al computer client che consenta a chiunque abbia accesso alla macchina di eseguire attacchi MITM. Questo è il motivo per cui eliminerei il file .key di CA non appena è stato firmato il certificato localhost
. In teoria, un attacco MITM potrebbe essere lanciato con solo il certificato localhost
generato, ma solo contro localhost
connessioni e non contro www.mybank.com
.
Quello che non vedo come una minaccia: chiunque abbia accesso al computer client avrà già accesso a tutto ciò che passa tra il client di terze parti e il middleware, come la maggior parte dei client di terze parti non t crittografare i materiali che ricevono dal middleware. Pertanto non vedo la sicurezza del certificato localhost
generato come particolarmente rilevante.