Capire come funziona la convalida dei certificati

3

Uso Wireshark per capire meglio come viene stabilita una connessione SSL. Ho catturato il traffico di visitare tre pagine: reddit, facebook e questo. Tutto HTTPS, naturalmente.

Reddit: dopo che il server ha inviato Certificate , invia un Certificate Status con la risposta del server OCSP. Perché il server invia queste informazioni? Non dovrebbe essere il cliente quello che interroga l'OCSP per conoscere lo stato del certificato del server?

Sicurezza SE: vedo che non esiste alcuna convalida. Dopo che il client ha ricevuto il certificato, scambiano la chiave simmetrica e viene stabilito il canale crittografato. Perché non c'è la convalida?

Facebook: dopo aver stabilito la connessione SSL, ad esempio dopo la creazione del canale crittografato, il client interroga il server OCSP. Perché non interrogare l'OCSP prima di stabilire la connessione?

PS: se qualcuno è interessato alle acquisizioni, esegui semplicemente Wireshark, visita quei siti e usa il filtro ssl.handshake .

    
posta yzT 02.03.2016 - 14:13
fonte

1 risposta

5

Validazione riguarda l'accertamento che un certificato sia autentico. L'obiettivo è sapere se la chiave pubblica che vedi è realmente di proprietà del server con cui intendi parlare. Questa convalida comporta molti passaggi, descritti in tutti i loro dettagli cruenti; la maggior parte di essi sono completamente locali alla macchina client, quindi non li vedrai apparire in alcun modo con tracce di rete. In effetti, questa è l'idea dei certificati: per consentire la convalida offline.

C'è ancora un passaggio di convalida dei certificati che non può essere realmente offline, ovvero il controllo dello stato di revoca . Per definizione, la revoca riguarda l'annullamento di un certificato che altrimenti andrebbe bene. I tre metodi principali per l'accertamento dello stato di revoca sono:

  • CRL: un elenco di certificati revocati viene regolarmente pubblicato dalla CA (o da un'altra entità a cui tale potere è stato delegato). Il CRL è firmato e valido per qualche tempo (alcune ore o giorni).

  • OCSP: a un server OCSP debitamente designato può essere richiesto lo stato corrente di un certificato. La risposta OCSP è firmata e ha le sue date di validità, quindi una risposta OCSP è in qualche modo equivalente a un CRL che parla di un singolo certificato.

  • Nulla: per molto tempo, i browser Web presumevano semplicemente che nessun certificato fosse mai revocato, il che rende sicuramente l'implementazione molto più semplice.

URL per il download CRL o per parlare con un server OCSP sono scritti nel certificato stesso. Un sistema che vuole convalidare un certificato (il tuo browser Web, una "relying party" nella terminologia X.509), e non usa il "nulla" metodo di controllo di revoca, vorrà scaricare un CRL recente o ottenere un OCSP nuovo risposta. Tuttavia, può anche memorizzare nella cache la risposta CRL o OCSP ottenuta; Windows, in particolare, mantiene una cache CRL resistente ai reboot. Pertanto, se il browser scarica un CRL, verrà visualizzato il download CRL sulle tracce della rete solo una volta al giorno o giù di lì (in base al campo nextUpdate CRL). Puoi ispezionare la cache CRL di Windows con certutil -URLcache CRL . Nota che Firefox esegue la propria convalida completamente indipendentemente dal supporto di Windows per i certificati.

La graffatura OCSP è un'estensione SSL / TLS con cui un client può chiedere al server di inviare, come CertificateStatus messaggio, una risposta OCSP che stabilisce che il certificato del server non è stato revocato (per ora): poiché le risposte OCSP sono datate e firmate, il modo in cui tale risposta viene ottenuta non ha importanza. Poiché il server può ragionevolmente presumere che tutti i client che parlano con esso avranno bisogno di verificare lo stato di revoca del certificato inviato dal server, ha senso utilizzare il server stesso come cache per la relativa risposta OCSP. Evita la necessità che il client apra una connessione aggiuntiva al risponditore OCSP e rende anche la vita più facile per il risponditore OCSP, perché deve solo firmare una singola risposta una volta ogni poche ore.

Non tutti i server supportano la pinzatura OCSP, motivo per cui non visualizzerai% messaggi diCertificateStatus per i tutti server.

    
risposta data 02.03.2016 - 14:45
fonte