Non mi fido delle autorità di certificazione, quindi sto usando un certificato autofirmato sul mio server. Il server fornisce sia un sito web che altri servizi.
La maggior parte dei moderni software con funzionalità SSL, quando si incontra SSL, controlla se il certificato è fornito da una CA e se non genera un avviso molto spaventoso . Contrariamente a La logica di Mozilla , credo che nel mio caso un certificato autofirmato è in realtà più sicuro , perché evita il rischio di CA dannose o incompetenti .
Ma diciamo che voglio dare ad un amico l'accesso al mio sito web o al mio server. Forse ho alcune foto su di esso del mio viaggio che voglio mostrarle: se gli fornisco l'URI sicuro, anche il loro computer farà apparire i soliti avvertimenti. Ma visto che a differenza di me, non erano quelli che hanno configurato tutto, in che modo loro sanno che Everything Is Fine ™ (a meno che l'impronta digitale non corrisponda)?
Potrei avere un piccolo avviso nella versione HTTP della mia pagina che spiega l'errore, e come verificare manualmente l'impronta digitale e assicurarmi che Tutto sia corretto . Ma:
- Se la connessione è stata compromessa, l'autore dell'attacco potrebbe semplicemente modificare questo avviso per dire "i certificati autenticati di nah bro sono assolutamente soddisfacenti, fidati"
- Se l'utente passa direttamente all'URI HTTPS, come farà a sapere di controllare la versione HTTP?
- Se l'utente utilizza un servizio non Web a cui si accede tramite il proprio programma, come farà a sapere l'avviso?
- Se l'utente non sa come funziona SSL, crederà al proprio browser e chiuderà il sito, invece di indagare su perché c'è un certificato autofirmato (poiché sfortunatamente la documentazione / L'atteggiamento degli autori UI sembra essere stato "non c'è mai una buona ragione").
Quindi, come posso assicurarmi che quando invii un utente al mio server e questi si trovino di fronte all'avviso "certificato autofirmato", sono in grado di decidere autonomamente se fidarsi o meno, invece di dover credi all'immagine distorta che il loro software dipinge per loro?
Non voglio dire agli utenti di "ignorare semplicemente l'avviso, va bene", perché non solo questo rinforza una cattiva abitudine in generale (e se la banca verificata dalla CA viene compromessa un giorno e presenta un firmato cert?) ma anche loro non avrebbero modo di sapere se il mio server è compromesso.
Vale anche la pena ricordare che i certificati non sono per sempre, e alla fine scadono, quindi l'utente deve essere in grado di distinguere tra un cambiamento sospetto di certificato (diciamo ben prima della scadenza pianificata di quello attuale), un cambiamento sospetto di certificato che è fatto per sembrare non sospetto (un MITM eseguito proprio quando avevo programmato di rinnovare la mia cert), un legittimo cambio di certificato (quando il mio certificato scade e ne emetto uno nuovo), e un cambiamento legittimo che sembra sospetto (I ha deciso di rilasciare un nuovo certificato prima del previsto per qualsiasi motivo).
Possiamo supporre che:
- Ho pochi utenti, quindi la scalabilità non è così importante. Ad esempio, gli utenti che mi inviano email o chiamano il mio numero di telefono per verificare il certificato sono soluzioni perfettamente valide.
- Gli utenti si fidano di me e possono comunicare con me attraverso un canale sicuro. Ad esempio, possono parlarmi di persona o inviarmi messaggi di posta elettronica crittografati.
- Gli utenti sono ragionevolmente intelligenti e ci si può aspettare che comprendano concetti di sicurezza di base come "se il certificato cambia in modo imprevisto, il sito potrebbe essere stato compromesso".
La mia preoccupazione principale riguarda gli utenti meno tecnici, che verrebbero confusi quando vedranno l'avviso del certificato autofirmato.