Domanda:
Perché i certificati autofirmati non sono affidabili ed esiste un modo per renderli affidabili?
Praz
2016-02-04 18:46:16 UTC
view on stackexchange narkive permalink

Ho creato localmente un certificato CA radice. Ho utilizzato il certificato CA per firmare il certificato IA e ho utilizzato il certificato IA per firmare il certificato del server. Quando provo ad accedere al server locale che utilizza il certificato del server, viene visualizzato un avviso di rischio per la sicurezza. C'è un modo per impedire che non dia l'avviso?

Tutto quello che voglio sapere è fondamentalmente, è possibile rendere attendibile il certificato auto-firmato?

Un certificato autofirmato è come creare un distintivo color oro in casa tua e poi andare in giro a mostrarlo a persone che dicono che sei un agente di polizia. Forse puoi fare quel trucco con i membri della tua famiglia che accettano che tu sia al comando, ma se vuoi essere un vero funzionario pubblico delle forze dell'ordine, devi essere ** fidato da un'autorità centrale ** che tutti altro si fida, come il governo della tua città o città o stato. Altrimenti, stai solo impersonando un agente di polizia e le persone farebbero bene a diffidare di te.
@CristianTM: Spesso quando qualcuno "STFW" per una risposta a una domanda, StackExchange è il miglior risultato - che è fantastico e parla molto bene di StackExchange! Non credo sia un motivo legittimo per squalificare una domanda dall'essere pubblicata qui. La risposta di BadSkillz sotto è semplice, utile e può portare questa stessa pagina in cima ai risultati di ricerca di tutti sull'argomento - E ci è voluto il suo tempo per produrlo quanto ci è voluto per pubblicare il * tuo * commento. :-)
"Autofirmato" è ortogonale a "fidato". Tutti i certificati nel mio truststore sono autofirmati, e il tuo? Quindi la domanda è semplicemente "come faccio a dire al mio browser di considerare attendibile un certificato precedentemente non attendibile?".
Questo è il motivo per cui non accettiamo certificati autofirmati:> Scusa per l'assenza di Juan da scuola ieri. >> -La madre di Epstein. (Se non hai familiarità con il programma TV * Bentornato, Kotter *, potresti non ottenere il riferimento.)
@ToddWilcox molto bella, spiegazione al punto. Potrei finire per usare quello. \ * yoink \ *
@kubanczyk - Potrebbe ottenere il certificato del server considerato attendibile dal browser inserendolo direttamente nel truststore, inserendo il certificato IA o inserendo il certificato CA. In genere, vorrebbe inserire la CA, ma il trust store non deve essere solo certificato autofirmato; con la firma incrociata, i certificati possono essere sia root autofirmati che firmati da un altro certificato.
@ToddWilcox Questa è la stessa cosa che fa l '"autorità centrale", tranne per il fatto che ci fidiamo tutti degli autori invece che solo dei parenti stretti. Invece di un badge adesivo, pensala in questo modo: è equivalente al ragazzo più figo a una festa che ti invita e dice a tutti "è a posto" perché l'hai pagato per farlo. Non c'è vera autorità, fiducia, ecc. Oltre al nome del ragazzo più figo scolpito insieme a pochi altri ragazzi fantastici sulla roccia di granito monolitica che è l'autenticazione SSL. Comodo? Dai .... ricordi come erano negli anni '90? Lo sono ancora: fastidiosi implacabili spammer di telemarketing SSL. Non fidato;)
@ToddWilcox Un'analogia un po 'approssimativa che implica che ci sia qualcosa di intrinsecamente illegale o disonesto nei certificati autofirmati. Non c'è. Un certificato autofirmato non deve essere altro che quello che è. Un certificato firmato da qualcuno che non si è guadagnato la fiducia del produttore del sistema operativo, del produttore del browser o del produttore dell'app.
Nota a margine: se stai cercando di ottenere un certificato valido per un dominio pubblico, puoi usare letsencrypt. Sono finalmente in beta pubblica, l'ho scoperto la scorsa notte mentre lavoravo sul server di un client e ho ottenuto 4-5 domini configurati con certificati in pochi minuti. È gratuito e open source - https://letsencrypt.org/
@ToddWilcox Sarebbe un'ottima risposta _...
Puoi anche saltare la parte CA, creare un certificato server autofirmato e distribuirlo a tutti i browser che dovrebbero considerarlo attendibile.Questo in realtà rimuove molte complicazioni e fiducia implicita (semplicemente non scala molto bene)
Otto risposte:
BadSkillz
2016-02-04 18:51:58 UTC
view on stackexchange narkive permalink

È necessario importare il certificato radice nel truststore per il browser. Una volta che il browser sa che ti fidi di questo certificato di origine, tutti i certificati firmati da questo verranno visualizzati come affidabili.

Tieni presente che questo renderà la connessione affidabile solo per te, tutti gli altri che non hanno il certificato di origine installato continuerà a ricevere un errore.

Tieni presente che, a seconda di come è configurato il certificato e di come lo aggiungi, ciò potrebbe consentire al tuo certificato autofirmato di firmare certificati per qualsiasi dominio. (Questo * non * è qualcosa che desideri.)
@duskwuff: In realtà, _può_ essere esattamente quello che vuoi - se vuoi impostare la tua autorità di certificazione, qualcosa che molte aziende fanno per la loro rete interna. Probabilmente non è il caso qui, però.
@duskwuff, è esattamente come funziona un proxy https, come BlueCoat. L'organizzazione acquista il proxy, quindi installa il certificato autofirmato del proxy nell'archivio radice attendibile di ciascuno dei computer dell'organizzazione. Il proxy quindi MITM tutte le connessioni, comprese le connessioni crittografate, per garantire che "cose ​​cattive" non possano passare attraverso il proxy.
sethmlarson
2016-02-04 18:52:10 UTC
view on stackexchange narkive permalink

I certificati autofirmati non sono intrinsecamente considerati affidabili dal tuo browser perché un certificato in sé non costituisce alcun trust, la fiducia deriva dall'essere firmati da un'autorità di certificazione di cui TUTTI si fidano. Il tuo browser semplicemente non si fida del tuo certificato autofirmato come se fosse un certificato radice. Per fare in modo che il tuo browser accetti il ​​tuo certificato, accedi alle configurazioni del tuo browser e aggiungi il certificato come certificato radice.

Il modo migliore per ottenere un certificato autofirmato attendibile è eseguire una Cerimonia delle chiavi, che è fondamentalmente un grande evento pubblico in cui tutti i crittografi e gli esperti di sicurezza si riuniscono per assistere a una CA radice che genera la propria coppia di chiavi e si dichiara CA radice. Tutto viene registrato: video, chi sono e cosa fanno tutti dagli avvocati. La chiave privata viene suddivisa in molte parti diverse e archiviata separatamente nelle casseforti in genere dopo la firma di un singolo certificato che viene utilizzato come intermediario per firmare altri certificati. Puoi leggere la procedura tipica, se lo desideri. Ovviamente, è necessario disporre di una sicurezza all'avanguardia, sia tecnologica che fisica, per farlo e che chiunque voglia utilizzare o fidarsi della propria CA radice. Dopo aver eseguito questa operazione, i certificati possono essere inclusi nelle distribuzioni del browser e quindi possono essere utilizzati dal pubblico in generale per creare catene di certificati affidabili.

La parte "tutti si fidano" dell'affermazione di cui sopra è il fallimento chiave dell'intero sistema. A mio parere, l'intera infrastruttura TLS è costruita su un castello di carte e nessuno vuole ammetterlo.
@JonTrauntvein Sono d'accordo con questo (e altri sono disposti ad ammetterlo) che ci sono alcune parti di TLS che non sono buone. Il primo è il sistema di revoca dei certificati che fondamentalmente non fa nulla poiché la maggior parte dei browser ignorerà se un certificato viene revocato o meno e in secondo luogo che alcune CA dello stato nazionale ** non ** seguono le linee guida di sicurezza sopra ma sono ancora impacchettate con tutti i principali browser per motivi politici aziendali.
Direi che "La fiducia deriva dall'essere firmati da un'autorità di certificazione di cui si fida il produttore del browser e tu ti fidi del produttore del browser".Se ci sono alcune differenze tra te e il produttore del browser, puoi aggiungere / rimuovere CA root al / dal tuo browser.
BlueRaja - Danny Pflughoeft
2016-02-04 23:41:22 UTC
view on stackexchange narkive permalink

In realtà, i certificati autofirmati possono essere protetti, ma non con il modello che stiamo utilizzando ora.


Con la diffusa CA (autorità di certificazione ) attualmente utilizzato da tutti , lo scopo del certificato firmato da una CA attendibile è fornire l'autenticazione.

Quando otteniamo un certificato, tutto ciò che vediamo sono 1 e 0 sta entrando dal jack nel muro; non abbiamo idea da dove provengano gli 1 e gli 0. Tuttavia, poiché il certificato è firmato da una CA, cosa che nessun altro al mondo oltre a quella CA può fare, e poiché ci fidiamo della CA per verificare l'identità del proprietario del certificato, ci fidiamo che il certificato proviene da chi sostiene.

Ovviamente, se CA è compromessa o non verifica correttamente il proprietario, tutte le scommesse vengono off.


Tuttavia, esiste un altro modello, in base al quale i certificati autofirmati fanno forniscono autenticità. Si chiama modello notarile .

In sostanza, invece di affidarci a una singola CA, distribuiamo la fiducia a un numero qualsiasi di notai . Questi notai setacciano Internet alla ricerca di certificati, conservando una cache di tutti i certificati che hanno visto. Quando visiti un sito per la prima volta e ottieni il certificato, chiedi a numerosi notai distribuiti a livello globale qual era l'ultimo certificato che hanno visto. Se non sono d'accordo con ciò che stai vedendo, potresti far parte di un attacco man-in-the-middle.

Con questo modello, i certificati autofirmati sono perfettamente protetti, purché si presuma il server non viene immediatamente compromesso prima che un notaio possa mai visualizzare il suo certificato.


Il modello notarile è ancora agli inizi ed è dubbio che prenderà mai il controllo del modello CA (in realtà, non è necessario - possono essere utilizzati in tandem) . Il progetto più promettente finora è Convergence.io, che ha un plug-in per Firefox.

+1 per aver spiegato un modello migliore invece di ripetere semplicemente lo schema di autenticazione (noto come "modello di profitto") con cui attualmente ci permettiamo di continuare. Dio non voglia che le CA perdano terreno per aver fatto ... praticamente nulla. (GlobalSign -> $ 250 / anno DV -> ... ROFL)
Questo è essenzialmente un algoritmo di autenticazione distribuito da manuale in cui fintanto che una certa soglia di nodi si fida di un certificato, la rete si fida di esso. C'è ancora molta ricerca in questo campo ed è interessante se ti piace questo genere di cose.
Giacomo1968
2016-02-05 11:25:34 UTC
view on stackexchange narkive permalink

Risposta più breve.

Molte risposte qui, ma nessuna sembra arrivare direttamente al punto: senza una terza parte neutrale e riconosciuta, come un'autorità di certificazione, che verifichi la proprietà del certificato, un certificato è insignificante.

Risposta più lunga.

Per capire meglio, quando si fa qualcosa come creare una connessione HTTPS si ha la seguente catena:

  • Un client web browser che effettua la richiesta al server.
  • Il server web remoto che invia i dati al client.
  • E un certificato HTTPS autorizzato da una terza parte neutrale che garantisce che il server è chi lo è e la crittografia è valida per questo motivo.

Un certificato autofirmato è intrinsecamente non attendibile perché chiunque può generare un certificato autofirmato . Chiunque includa un'entità che finge deliberatamente di essere qualcosa / qualcuno che non è. Con un certificato autofirmato, semplicemente, non esiste una terza parte fidata che abbia le procedure umane di base impostate per dichiarare semplicemente "Ok, questo dominio ha un certificato che abbiamo emesso e quindi puoi fidarti di loro. Diciamo che in realtà sono il dominio che pretende di essere e non un impostore. "

E poiché chiunque nel mondo può creare un certificato autofirmato da solo, il suo utilizzo presenta problemi di fiducia intrinseci. Ciò che rende valido un certificato ha pochissimo a che fare con la tecnologia avanzata o le tecniche di crittografia , ma ciò che lo rende valido è un processo incentrato su una terza parte neutra e riconosciuta che convalida un procedura di utilizzo e produttori di browser che aderiscono a tali procedure.

Alla fine della giornata una coppia di chiavi di crittografia è un mucchio di bit e byte completamente insignificante senza l'applicazione dei processi e delle procedure che li circondano .

Benoit Esnard
2016-02-05 19:54:05 UTC
view on stackexchange narkive permalink

I certificati autofirmati non possono essere considerati attendibili perché chiunque è in grado di crearne uno.

Un utente malintenzionato che esegue un attacco MITM potrebbe facilmente sostituire qualsiasi certificato con uno autofirmato uno e impersonare qualsiasi sito web che stai visitando, anche se stai utilizzando HTTPS.

Ecco perché stiamo utilizzando autorità di certificazione affidabili per garantire che i certificati non possano essere falsificati.

jwilleke
2016-02-05 21:12:50 UTC
view on stackexchange narkive permalink

Abbiamo tutti bisogno di un po 'di contesto.

C'è una differenza tra "untrusted" e secure.

E "Trusted" non implica necessariamente Secure (o Authentic)

Un certificato autofirmato su una rete isolata con un solo server e un client è probabilmente più sicuro di qualsiasi certificato "fidato".

E "fidato" implica SOLO che un certificato dell'autorità di certificazione è stato aggiunto all '"Archivio certificati attendibili" per il client. Se il certificato dell'autorità di certificazione è stato aggiunto durante una sessione di "phishing", il certificato non contiene nulla di sicuro.

Non sono un fan di questo ci sono spesso centinaia di autorità di certificazione "attendibili" inserite nel client da "altri", ma non conosco nemmeno un approccio migliore.

Certamente le autorità di certificazione devono eseguire un migliore processo di "verifica" ( in generale) di quanto stanno facendo ora prima di emettere un certificato.

Gryzorz
2016-02-04 20:22:51 UTC
view on stackexchange narkive permalink

A qualsiasi applicazione deve essere fornito l'elenco dei "certificati root" per essere attendibili.

Nel caso di un browser, esiste un elenco definito fornito di default con qualsiasi browser, ma questo elenco non lo fa contenere il tuo certificato.

Immagina di non dover fornire effettivamente l'elenco dei certificati di cui ti fidi, quindi chiunque sarebbe in grado di configurare un sito Web https che un browser nel mondo accetterebbe senza preavviso del rischio per la sicurezza.

D'altra parte, funzionerebbe immediatamente se il tuo certificato CA fosse esso stesso firmato da uno dei certificati attendibili predefiniti ... ma devi pagare.

Ci sono abbastanza risposte su come aggiungere un certificato CA all'elenco di fiducia, quindi salterò questa parte.

Dio Phung
2017-06-28 12:24:37 UTC
view on stackexchange narkive permalink

Se vuoi farlo per i browser, ecco i passaggi:

Per Chrome 58+: - Impostazioni -> Mostra impostazioni avanzate -> Gestisci certificati -> Importa -> sfoglia -> scegli Attendibile Autorità di certificazione radice -> fai clic su Sì nella finestra popup.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...