Un certificato SSL autofirmato è un falso senso di sicurezza?


30

Un certificato SSL autofirmato è un falso senso di sicurezza?

Se vieni intercettato, l'utente accetterà semplicemente il certificato come fa sempre.

Risposte:


25

Domanda interessante, dipende dall'uso secondo me. Sei ancora protetto in termini di crittografia della sessione, ma non hai modo di sapere se è il certificato SSL corretto che ti viene presentato a meno che tu non distribuisca il tuo certificato radice CA a utenti / clienti. Per i progetti di test / sviluppo interni questo funzionerebbe alla grande, si genera un certificato CA radice che si usa distribuire ai propri utenti (può essere fatto tramite Criteri di gruppo in Windows e tramite la riga di comando openssl in Linux / BSD) e quindi utilizzare quel certificato root per firma il tuo CSR. Gli utenti non vedranno un avviso o altro e sai che il certificato è firmato dalla tua CA interna.

Per i siti esterni in cui non puoi assicurarlo, direi comunque che un certificato autofirmato è meglio di nessun SSL se stai inviando password o altre informazioni sensibili tramite la connessione.

Tuttavia, ci sono molti emittenti di certificati "commerciali" molto economici, tra cui GoDaddy . È possibile ottenere un certificato per circa 40 euro all'anno. GoDaddy offre persino certificati gratuiti ai siti web del progetto OpenSource.


Questo è esattamente ciò che facciamo. Fai attenzione, anche se con i certificati economici. Alcune delle CA radice piuttosto dispari e non tutte si trovano nella raccolta di certificati CA radice forniti con tutti i browser.
Wolfgangsz,

4
+1 tranne " il certificato autofirmato è meglio di nessun SSL" - se si verifica che è il proprio certificato e non quello fornito da un MITM. Onestamente, quando è stata l'ultima volta che un utente normale l'ha fatto? (Sospetto che la risposta coinvolgerebbe la luna blu e i maiali volanti) In altre parole, usando un certificato SSL autofirmato senza aver distribuito i certificati CA agli utenti, stai desensibilizzando gli utenti all'avviso spaventoso che ricevono: impareranno per fare clic su questo, anche "mi hanno detto di ignorare l'avvertimento su mysite.example.com, così posso ignorarlo ovunque; guarda, un'icona a forma di lucchetto!" Voilà, falso senso di sicurezza!
Piskvor,

7
@Piskvor, in realtà è colpa dei browser. In primo luogo, i browser generalmente non forniscono un modo per "accettare in modo permanente" certificati auto-firmati precedentemente sconosciuti in modo che l'utente non si metta in pericolo ad ogni accesso. In secondo luogo, i browser non scoraggiano l'uso del vecchio HTTP semplice, creando anche un falso senso di sicurezza. Quindi, HTTP è sempre peggio di HTTPS, sia in termini di sicurezza che di consapevolezza dell'utente (almeno ottengono l'avvertimento!).
Rotsor,

1
@Rotsor: In primo luogo, Opera ha questa funzione che descrivi integrata, FF ha il Patrol certificato (che almeno avverte del cambio di certificato). Si noti inoltre che non tutto su SSL è un browser (IMAPS ecc.). In secondo luogo, in che modo la pletora esistente di HTTP individua solo la colpa dei browser? (e no, i browser solo HTTPS non hanno mai preso piede, proprio perché c'era una rete drasticamente più piccola per navigare con loro). Terzo, "ricevono l'avvertimento" sarebbe utile, se solo gli utenti lo leggessero - e non fare clic ciecamente su "accetta" per farlo sparire. "Fare clic su Accetta significa comprendere" è il delirio condiviso degli sviluppatori.
Piskvor,

1
@Piskvor, è bene sapere che alcuni browser offrono questa funzionalità. Per quanto riguarda l'HTTP, non posso dire che cosa si debba fare (non consentire l'HTTP non è ovviamente un'opzione), ma avere più avvisi relativi alla sicurezza con SSL autofirmato che senza SSL è assolutamente sbagliato ed è il browser colpa!
Rotsor,

12

Non sarò d'accordo, una volta per motivi tecnici ristretti e una volta per motivi generali.

La stretta base tecnica è che il PO ha chiesto certificati autofirmati e diverse altre risposte si riferiscono a certificati firmati da autorità di certificazione private, il che è un problema leggermente diverso. Ma non molto diverso, quindi è davvero solo una nota di passaggio.

L'obiezione principale è che penso che fintanto che i certificati firmati commercialmente siano di spesa più che banale - e $ 40 all'anno non sono una spesa banale per molte persone su questo pianeta - i certificati autofirmati hanno un ruolo importante da svolgere nella sicurezza di Internet, a condizione che vengano riconosciute le loro limitazioni .

Un certificato autofirmato è come una chiave ssh dal mio known_hostsfile. Senza una verifica indipendente, non posso assicurarmi che sto parlando al sistema che credo di essere; ma mi può assicurare che il sistema con cui sto parlando ora è lo stesso sistema con cui ho parlato l'ultima volta che pensavo di avere una conversazione con esso. Memorizziamo continuamente chiavi ssh e non ho mai incontrato un amministratore di sistema che abbia verificato in modo indipendente più di una frazione delle chiavi pubbliche nel suo known_hostsfile.

I certificati autofirmati (e, in tal caso, i certificati firmati da autorità di certificazione non generalmente valide) sono molto meglio di nessun SSL, a condizione che le persone si rendano conto che, a meno che non li verifichino, proteggono solo la comunicazione tra loro, il server all'altra estremità del record DNS e tutti gli uomini al centro attualmente in linea. Se verificano indipendentemente il certificato, l'autenticazione e la crittografia sono almeno altrettanto valide di quelle fornite da un certificato firmato da una CA riconosciuta.

Inoltre, coloro che desiderano presentare l'uso di certificati firmati da una CA riconosciuta come unica e unica panacea per la sicurezza di Internet potrebbero aver bisogno di riflettere seriamente su questioni come l'inclusione della CA di firma del governo cinese nel pacchetto Mozilla standard e il certificati SSL fraudolenti firmati da Comodo .


Purtroppo, il modello di "CA fidata" è effettivamente rotto (ed è stato per anni); sfortunatamente, non sta andando via (e non c'è nulla di meglio per sostituirlo). Come sempre, SSL e CA affidabili non sono magici folletti di sicurezza; l'utente deve mantenere attivamente la sicurezza - che è, in gran parte, un presupposto piuttosto folle.
Piskvor,

2
I tuoi utenti sono in grado di effettuare una valutazione approfondita del loro livello di confidenza nell'integrità del loro percorso verso l'attuale server DNS (compresa la possibilità di avvelenamento da cache) e il dispositivo che stanno colpendo? Il mio non sa cosa sia il DNS, e tanto meno essere in grado di prendere decisioni di sicurezza informate sulla loro connessione a un server in un altro stato, connesso a un altro sito tramite MPLS, che è connesso all'utente tramite una VPN client, che sono via tramite wifi caffetteria non crittografata. Evita di dare loro quella responsabilità.
Shane Madden

2
@Shane Madden: Un'area in cui ciò è possibile sono i frontend web di amministrazione - ad esempio phpMyAdmin (o, in misura minore, SVN su HTTPS). Di solito c'è un numero limitato di utenti e contengono una parte significativa di un indizio . Non mi aspetto che il mio bisnonno faccia la testa o la coda di un avviso sul certificato SSL, ma sicuramente mi aspetto questo da un altro amministratore di sistema, soprattutto se si tratta di un server sotto il suo controllo. Anche un utente di varietà da giardino non ha la known_hostsminima idea di @MadHatter a cui fa riferimento.
Piskvor,

8

Per i siti esterni, in cui gli utenti non hanno installato il certificato CA (che è il caso più comune), sì, un certificato autofirmato dà un falso senso di sicurezza , quindi è peggio che inutile:

  • Innanzitutto, senza un certificato CA preinstallato, in che modo l'utente verifica che il certificato provenga effettivamente da te e non da un utente malintenzionato? Abbinando i campi del certificato (CN, impronte digitali, ecc.), Ovviamente - ma contro cosa? Così ora avete bisogno di un canale laterale per verificare il certificato - e nei pochi casi che ho visto che, gli operatori di linea di supporto (che avrebbe dovuto servire come canale laterale per la verifica) non hanno idea di cosa che dovrebbe significare; inoltre, gestire tale canale laterale è un ordine di grandezza più costoso rispetto all'ottenimento di un certificato firmato dalla CA, quindi l'utente deve fidarsi ciecamente di te.

  • In secondo luogo, l'avviso spaventoso che l'utente riceve fa paura per una buona ragione: poiché l'utente non può / non verifica il certificato presentato, potrebbe trasmettere dati in modo sicuro all'Haxx0r D00dz elbonico.

  • Terzo, e peggio di tutto, stai desensibilizzando gli utenti : "beh, mi hanno detto che avrei dovuto ignorare quell'avvertimento su https://mysite.example.com/ e un'incudine non mi è caduta in testa, e il mio neanche il pesce rosso è morto; sooooo, ciò significa che è solo un'altra casella di avviso senza alcun significato reale, quindi posso ignorare questa casella ogni volta che la incontro - ottengo comunque quella bella icona di lucchetto, e questo è importante. "

In altre parole, il livello di protezione è paragonabile al semplice HTTP (tranne per lo sniffing on-the-wire: sebbene i dati siano crittografati in transito, questa è una caratteristica piuttosto anemica senza verifica dell'endpoint), ma la sensazione di protezione è irragionevolmente alta . Analogia con le auto brutte: "Ho l'ABS, quindi ora posso guidare in modo più sicuro in cattive condizioni" - tranne che l'ABS esiste solo nella brochure di vendita dell'auto, senza essere effettivamente presente nell'auto.

Lettura consigliata: best practice SSL OWASP

TL; DR: Utilizzando certificati autofirmati su siti rivolti al pubblico, stai rendendo la Rete un posto peggiore, un utente all'oscuro alla volta.


2
@downvoter: Gradirei se hai indicato dove la mia risposta è effettivamente errata ("errata" anziché "scomoda, scomoda e fastidiosa da implementare"). La sicurezza è difficile e andare "la la non ti sento" non fa nulla per risolverlo.
Piskvor,

2
Anche se non ho votato per il downgrade della tua risposta, il testo della descrizione comandi sulla freccia in giù indica il downgrade per nessun motivo se non una risposta non utile. Penso che anche il falso senso del pendolo di sicurezza possa oscillare nella direzione opposta. Le recenti violazioni di comodo RA dimostrano che non è neanche così difficile per un "cattivo" procurarsi un certificato perfettamente legittimo.
mahnsc,

@mahnsc: grazie per il promemoria; Sono consapevole che :-) "Un certificato SSL autofirmato è un falso senso di sicurezza?" "Sì, per i seguenti motivi ..." sembra utile, no? Quindi, ero curioso di sapere perché non sarebbe stato così: avrei potuto imparare qualcosa da una visione opposta; da un downvote, non tanto.
Piskvor,

1
@mahnsc: buon punto sulle CA compromesse. Non sto dicendo che l'elenco CA principale sia impostato su pietra e non sia integrabile: la sicurezza perfetta non esiste; ma ci vuole uno sforzo considerevolmente maggiore per romperlo che impostare un proxy SSL di acquisizione su un gateway di rete.
Piskvor,

1
@mahnsc: volevo dire che è più semplice impostare un proxy SSL e sperare che l'utente faccia clic sugli avvisi, piuttosto che impostare un proxy SSL e sperare che una richiesta di certificato fasullo scivoli attraverso il processo di verifica della CA. Ognuno è possibile, come abbiamo visto, ma il primo è molto più facile da fare (e più difficile da rilevare in seguito, poiché gli utenti del browser di solito non tengono audit trail).
Piskvor,

8

Dipende. Se pensi che ti renda più sicuro, aumenta il rischio quando scegli di fare cose più rischiose con il tuo falso senso di sicurezza. Se lo tratti in modo funzionale equivalente a HTTP, direi che sei leggermente più sicuro.

Senza SSL / HTTPS, chiunque abbia wirehark sulla propria rete (o sulla rete locale di chiunque acceda) può semplicemente ascoltare e acquisire username / password inviati come testo normale.

Con SSL autofirmato non possono semplicemente ascoltare, ma ora devono falsificare il tuo sito, potenzialmente alterare il DNS per fare un uomo nel mezzo (MITM). Questa è ancora una minaccia, ma significativamente più difficile da realizzare per loro.

L'altro problema con l'utilizzo di SSL autofirmato è che molti browser considerano i certificati autofirmati come una grave minaccia alla sicurezza e ti avvisano prima di entrare (ad es. Chrome) con una gigantesca pagina rossa. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Questo potrebbe essere un grosso inconveniente.

Quindi la linea di fondo è: se si esegue qualcosa che non deve essere particolarmente sicuro (ad esempio, nessun dato della carta di credito, nessun numero di previdenza sociale) e non può permettersi un certificato adeguato, un certificato autofirmato potrebbe avere un senso (per dire impedire ad altri utenti della rete di annusare facilmente le loro informazioni di accesso).


0

Dipende da cosa intendi con "sicurezza" e quale sia l'estensione.

Ad esempio, il browser viene fornito con una serie di CA accettate per impostazione predefinita. Ciò significa che qualsiasi certificato emesso da questa CA è accettato dal tuo browser (fino a quando non corrisponde al nome DNS). Ora, immagina che un governo malvagio possieda un'autorità di certificazione o possa costringerla a emettere un certificato per il sito che stai visitando. Quindi, eseguire un MITM è molto semplice: possono eseguire il proxy della tua connessione, inviando al tuo browser il certificato che hanno e il tuo browser lo accetterà, poiché proviene da una CA "attendibile". Fino a quando non sono trasparenti DNS (che è la base per MITM), questo è ok.

Quindi, la "lista delle CA accettate" è fondamentalmente una grande falla di sicurezza, fino a quando una di queste CA non coopererà con un governo malvagio. Avere la propria CA è molto meglio.

Ovviamente, puoi farlo nella tua azienda o nel tuo server di casa, perché puoi installare il tuo certificato CA nel client, che controlli anche tu. In un server pubblico, non puoi trattare con nessun utente, chiedendogli di aggiungere un'eccezione o di aggiungere il tuo certificato.

Quindi, dipende dal significato di "sicurezza" e dall'ambito. SE possiedi i client, SICURO, l'auto-firma è più sicura, finché non installi sul client stesso il certificato della tua CA.

Ovviamente, non puoi farlo su un sito Web pubblico poiché non possiedi tutti i clienti. Quindi avrai un rischio di comportamenti diversi, il che non è sicuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.