Risposte:
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.
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_hosts
file. 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_hosts
file.
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 .
known_hosts
minima idea di @MadHatter a cui fa riferimento.
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.
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).
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.