Ho già calpestato questa fossa. Ho dimenticato come praticare, ma ricordo ancora questo principio. Spiega approssimativamente:
Il pacchetto di installazione del browser memorizza alcuni dei certificati root (chiavi pubbliche) di cui si fida.
Per sicurezza, gli emittenti di certificati di solito memorizzano le chiavi private corrispondenti a questi certificati radici in un vault completamente disconnesso. Queste chiavi private root sono utilizzate nel vault per emettere alcuni certificati "intermedi", e le chiavi private di questi certificati intermedi hanno l'autorità di emettere il certificato di livello successivo. Queste chiavi private intermedie vengono installate su server online per guadagnare denaro emettendo certificati sul sito web. Una volta che questi server vengono hackerati, il publisher può emettere un ordine di revoca utilizzando la chiave privata del certificato root fisicamente isolata nel vault per eliminare la fiducia di questi certificati intermedi senza dover sfidarsi completamente del certificato root del publisher. Firma un nuovo certificato di emissione intermedia e sarai una brava persona che può guadagnare.
Ecco che arriva la domanda.
Il browser riconosce solo il certificato root. Per la certificazione del certificato intermedio, tu (il sito) devi rilasciare il tuo certificato.
Un sito HTTPS correttamente configurato dovrebbe includere l'intera catena di certificati nel certificato. Ad esempio, usa il comando openssl s_client -connect www.wosign.com:443 per visualizzare la configurazione del sito web di Wosign. Il resto del contenuto può essere ignorato, basta guardare il paragrafo della catena dei certificati: --- Catena di certificati 0 s:/1.3.6.1.4.1.311.60.2.1.3=CN/1.3.6.1.4.1.311.60.2.1.2=Guangdong/1.3.6.1.4.1.311.60.2.1.1=Shenzhen/businessCategory=Privato Organization/serialNumber=440301103308619/C=CN/ST=\xE5\xB9\xBF\xE4\xB8\x9C\xE7\x9C\x81/L=\xE6\xB7\xB1\xE5\x9C\xB3\xE5\xB8\x82/postalCode=518067/street=\xE6\xB7\xB1\ xE5\x9C\xB3\xE5\xB8\x82\xE5\x8D\x97\xE5\xB1\xB1\xB1\xE5\x8C\xE5\x8D\x97\xE6\xB5\xB7\xE5\xA4\xA7\xE9\x81\x931057\xE5\x8F\xB7\xE7\xA7\x91\xE6\x8A\x80\xE5\xA4\xA7\xE5\ x8E\xA6\xE4\xBA\x8C\xE6\x9C\x9FA\xE6\xA0\x8B502#/O=WoSign\xE6\xB2\x83\xE9\x80\x9A\xE7\x94\xB5\xE5\xAD\x90\xE8\xAE\xA4\xE8\xAF\x81\xE6\x9C\x8D\xE5\x8A\xA1\xE6\x9C\x89\ xE9\x99\x90\xE5\x85\xAC\xE5\x8F\xB8/CN=www.wosign.com i:/C=CN/O=WoSign CA Limited/CN=WoSign Classe 4 EV Server CA 1 s:/C=CN/O=WoSign CA Limited/CN=WoSign Class 4 EV Server CA i:/C=CN/O=WoSign CA Limited/CN=Autorità di Certificazione di WoSign 2 s:/C=CN/O=WoSign CA Limited/CN=Autorità di Certificazione di WoSign i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Firming/CN=StartCom Certification Authority ---
0, 1 e 2 sono i numeri di serie di ciascun livello di certificato nella catena di certificati. 0 è il certificato utilizzato dal sito web da verificare. Il suo CN dovrebbe corrispondere al nome di dominio del sito web. Dopo ogni numero di serie, la riga che inizia con s si riferisce al certificato, mentre quella che inizia con i indica chi ha rilasciato il certificato.
Si può vedere che il CN di 0 contiene un sospetto nome di dominio cinese e un dominio inglese www.wosign.com. È distribuito da WoSign CA Limited/CN=WoSign Class 4 EV Server CA.
Un certificato di 1 è l'emittente di 0. La 1 stessa viene rilasciata da un altro certificato, l'Autorità di Certificazione di WoSign. Guardiamo al livello successivo, 2. Dice che l'Autorità di Certificazione di WoSign è emessa da StartCom (haha, si scopre che è un subappaltatore!). )
Quindi, dopo averlo esaminato a questo livello, il browser dice: oh, conosco l'emittente del 2, ed è menzionato nel pacchetto di installazione, StartCom. Firma e validazione corrette, quindi fidati 2. Poi dovresti anche fidarti di 1 emesso da 2 e 0 emesso da 1. Quindi questo sito web è affidabile.
--
Tuttavia, se il sito web è configurato per contenere solo se stesso nel file CRT e non una catena di certificati sufficientemente completa da essere verificata dai dati integrati del browser, può essere rifiutato dal browser. Come cosa openssl s_client -connect touko.moe:443 --- Catena di certificati 0 s:/CN=touko.moe i:/C=CN/O=WoSign CA Limited/CN=WoSign CA Certificato SSL gratuito G2 --- Ce n'è solo 0 in un gruppo. Descrizione Il touko.moe nella riga s è rilasciato da WoSign CA Free SSL Certificate G2 nella riga i. È sparito.
Questa è la cosa più sorprendente di questa trappola: non è sempre vero se il browser non riesce a verificare a questo punto. Ci sono 2 situazioni: R. Non ho mai visto questo da quando è stato installato il browser. Poi la validazione fallisce. B. Se il browser ha già visto e verificato i, allora la verifica avrà successo.
Di solito l'amministratore va sul sito https dell'emittente del certificato per acquistare il certificato, il browser lo verifica e poi memorizza in cache tutti i certificati intermedi che sono stati verificati con successo, risparmiando tempo in futuro. Quando l'amministratore (per errore) ha configurato il suo sito web e ha consultato il test, non ha incontrato alcun problema. Perché il suo browser già riconosce questo certificato intermedio.
Tuttavia, molti utenti potrebbero non aver visitato altri siti web correttamente configurati rilasciati da questo certificato intermedio. Pertanto, la validazione fallisce perché non riesce a trovare un emittente affidabile.
È paragonabile al controllo delle emissioni di scarico dei veicoli diesel Volkswagen. Tutto andava bene quando l'ho controllato. Appena escono, mettono veleno.
MODIFICA: Come risolvere ...... Probabilmente è aggiungere l'impostazione SSLCertificateChainFile durante la configurazione del server e usare il bundle file fornito dal sito web dell'emittente del certificato (il file contiene una serie di certificati intermedi per stabilire la connessione tra il tuo certificato e un certificato ad alta fiducia).
|