Certificati (certificato CA e certificato EE / locale)

Oct 21 2020

C'è una piccola confusione relativa al certificato CA e al certificato locale. Avevo fatto una domanda simile prima. Questa volta è un po 'specifico.

Per l'autenticazione tramite PKI, di seguito sono riportati i passaggi.

-> Ottieni il certificato CA e caricalo sul dispositivo.

-> Genera una coppia di chiavi pubblica e privata

-> Richiesta di un certificato locale / EE.

Ora, i passaggi seguiti per quelli sono:

Step1: richiedi il certificato di sicurezza pki ca iscrivi ca-profile affid

Ricevuti i seguenti certificati: Certificato: C = us, O = ginepro, CN = First Officer Fingerprint: 46: 71: 15: 34: f0: a6: 41: 76: 65: 81: 33: 4f: 68: 47: c4: df: 78: b8: e3: 3f Certificato: C = us, O = juniper, CN = First Officer Fingerprint: bc: 78: 87: 9b: a7: 91: 13: 20: 71: db: ac: b5: 56 : 71: 42: ad: 1a: b6: 46: 17 Certificato: C = us, O = juniper Fingerprint: 00: 8e: 6f: 58: dd: 68: bf: 25: 0a: e3: f9: 17: 70 : d6: 61: f3: 53: a7: 79: 10 Vuoi caricare il certificato CA sopra?

[sì, no] (no) sì

Domanda: una volta che il dispositivo ottiene il certificato CA dal server CA, in che modo il dispositivo verifica che sia il server corretto dall'impronta digitale?

Dire di sì al prompt significa automaticamente che mi fido del certificato e ho verificato l'impronta digitale tramite alcuni mezzi OOB?

Inoltre, l'hashing e la crittografia vengono eseguiti per l'intero contenuto del certificato o solo per la chiave pubblica del server CA?

Passaggio 2: utente @ host> richiedi ID certificato di registrazione certificato locale di sicurezza pki

In questo passaggio, richiediamo il certificato locale dopo aver generato la coppia di chiavi.

Domanda: una volta ottenuto il certificato locale dal server, come possiamo verificare che provenga dalla fonte o dal server corretto e dall'autenticità?

È stata eseguita la decrittografia della firma? O si fida di esso perché abbiamo configurato quel server sotto il profilo ca?

Anche se lo decrittografa, il dispositivo lo fa così velocemente? Inoltre, tutta la decrittazione e il confronto devono essere eseguiti manualmente da un essere umano?

Passaggio 3: diciamo che deve essere formato un tunnel tra A e B. A invia il certificato locale a B e B lo invia ad A.

Se non sbaglio, local-certs contiene le rispettive chiavi pubbliche.

utente @ host> mostra i dettagli di ciao ID certificato certificato locale di sicurezza

Identificatore del certificato: ciao

..... Emittente: Nome comune: CA di esempio, Componente di dominio: locale, Componente di dominio: demo Oggetto: Organizzazione: o1, Organizzazione: o2, Unità organizzativa: ou1, Unità organizzativa: ou2, Paese: US, Stato: CA , Località: Sunnyvale, Nome comune: cn1, Nome comune: cn2, Componente di dominio: dc1, Componente di dominio: dc2 Stringa oggetto: C = Esempio, DC = dc1, DC = dc2, ST = CA, L = Sunnyvale, O = o1 , O = o2, OU = ou1, OU = ou2, CN = cn1, CN = cn2 Oggetto alternativo: "[email protected]", user.example.net, 192.0.2.1

Validità: .......

Algoritmo di chiave pubblica: rsaEncryption (1024 bit) 30: 81: 89: 02: 81: 81: 00: b4: 14: 01: d5: 4f: 79: 87: d5: bb: e6: 5e: c1: 14

..

Algoritmo di firma: sha1WithRSAEncryption

CRL di distribuzione:

http://example.example.net/CertEnroll/Example-CA.crl

Utilizzare per la chiave: cifratura chiave, firma digitale, 1.3.6.1.5.5.8.2.2, 1.3.6.1.5.5.8.2.2

Impronta digitale: 76: a8: 5f: 65: b4: bf: bd: 10: d8: 56: 82: 65: ff: 0d: 04: 3a: a5: e9: 41: dd (sha1) 8f: 99: a4: 15: 98: 10: 4b: b6: 1a: 3d: 81: 13: 93: 2a: ac: e7 (md5)

L'esempio sopra mostra un certificato locale e supponiamo che B lo riceva da A.

In che modo B autentica il certificato? O come fa a sapere che proviene da A?

So che è stata eseguita una verifica della firma, ma cosa viene decrittografato e cosa viene confrontato per dimostrare che l'autenticità peer.

Ho esaminato i documenti, ma non mi ha fornito un'immagine chiara, quindi sono venuto qui per le risposte.

Grazie.

Risposte

3 ecdsa Oct 21 2020 at 20:51

Dire di sì al prompt significa automaticamente che mi fido del certificato e ho verificato l'impronta digitale tramite alcuni mezzi OOB?

Corretto, quindi è responsabilità dell'utente verificare che questi siano i certificati corretti.

Inoltre, l'hashing e la crittografia vengono eseguiti per l'intero contenuto del certificato o solo per la chiave pubblica del server CA?

È sicuramente possibile che il certificato completo sia sottoposto ad hashing. Altre opzioni sono solo l'hashing della struttura subjectPublicKeyInfo ASN.1 nel certificato, o solo il subjectPublicKey all'interno di quello (cioè la chiave pubblica con o senza identificatore algoritmo).

Una volta ottenuto il certificato locale dal server, come possiamo verificare che provenga dalla fonte o dal server corretto e dall'autenticità?

Il protocollo SCEP (Simple Certificate Enrollment Protocol) garantisce l'utilizzo dei certificati attendibili installati nel primo passaggio. Ciò comporta la crittografia della richiesta di certificato per la CA e la verifica della firma dopo la restituzione del certificato. Tutto questo è completamente automatizzato e non richiede alcun intervento da parte dell'utente.

In che modo B autentica il certificato? O come fa a sapere che proviene da A?

Deve fidarsi della CA che ha emesso il certificato. E utilizza l'identità (ad esempio il DN del soggetto o un subjectAltName, ad esempio un FQDN o un indirizzo IP) per verificare che sia l'host corretto.

So che è stata eseguita una verifica della firma, ma cosa viene decrittografato e cosa viene confrontato per dimostrare che l'autenticità peer.

Ci sono diversi aspetti in questo. L'host A fornirà una firma con la sua chiave privata come parte del protocollo di autenticazione (ad esempio TLS o IKE), che B verifica con il certificato ricevuto da A (in pratica la firma viene decrittografata ei dati vengono confrontati con i dati di autenticazione prodotti localmente) . Il secondo aspetto è verificare che il certificato ricevuto sia attendibile. Per questo B costruisce una catena di fiducia per un certificato CA attendibile e le firme in quella catena vengono verificate. E come accennato in precedenza, anche l'identità dell'ospite A deve essere confermata dal certificato ricevuto.

2 MikeOunsworth Oct 21 2020 at 21:44

@ecdsa ha dato un'ottima risposta, cercherò di rispondere in modo diverso .


Domanda: una volta che il dispositivo ottiene il certificato CA dal server CA, in che modo il dispositivo verifica che sia il server corretto dall'impronta digitale?

Dire di sì al prompt significa automaticamente che mi fido del certificato e ho verificato l'impronta digitale tramite alcuni mezzi OOB?

Inoltre, l'hashing e la crittografia vengono eseguiti per l'intero contenuto del certificato o solo per la chiave pubblica del server CA?

Risposta breve: non ha alcun modo per convalidarlo; stai dicendo alla tua macchina di fidarsi di questa CA.

Fammi diventare filosofico per un minuto; la sicurezza digitale è un mucchio di tartarughe, ma in fondo devi fidarti di qualcuno. Ad esempio, ci sono molti meccanismi di sicurezza nel mio telefono Android, ma alla fine della giornata devo fidarmi degli sviluppatori di software che scrivono il sistema operativo e degli ingegneri che progettano l'hardware per non inserire backdoor.

L'idea centrale di PKI è rendere questo "mucchio di tartarughe" chiaro e trasparente. Tu , come utente, dici al tuo computer "Mi fido di questa CA principale". Questo è indicato come un "trust anchor". La CA radice verrà utilizzata per verificare l'attendibilità di altri oggetti ed entità crittografici, ma il computer non ha modo di testare l'affidabilità della CA radice stessa. È la tartaruga inferiore.

Prima di caricare il certificato CA radice, devi essere sicuro di avere quello giusto. Il modo migliore è confrontare manualmente (con i propri occhi) l'impronta digitale del certificato (che è un hash sull'intero contenuto del certificato) con una fonte attendibile indipendente (ad esempio confrontare il file del certificato con l'impronta digitale della CA radice sul sito Web del fornitore o chiedi a una persona di supporto di leggerti l'impronta digitale al telefono, ecc.).


Domanda: una volta ottenuto il certificato locale dal server, come possiamo verificare che provenga dalla fonte o dal server corretto e dall'autenticità?

Stai citando l'output della riga di comando dal tuo software, ma non ci hai detto di che software si tratta. La risposta a questa domanda dipenderà dal software che stai utilizzando e da come è configurato.

Analogia: quando ottieni una nuova carta di patente di guida, mandi la tua foto e la tua firma al governo e una carta torna per posta. Dovresti controllare che la foto e la firma siano tue (il controllo "sono io?" ), Ma in genere non ti preoccuperai di controllare che la carta sia autentica dal tuo governo. L'agente di polizia che ti ferma controllerà l'autenticità della carta, ma in genere tu come titolare della carta non lo farai.

Quando si riceve un nuovo certificato, si invia la chiave pubblica (all'interno di un file CSR (richiesta di firma del certificato)) e si riceverà indietro un certificato completo. Il software dovrebbe verificare che la chiave pubblica nel certificato corrisponda alla chiave privata che ha conservato localmente (il controllo "sono io?" ), Ma in genere non è necessario verificare che il certificato si incateni correttamente a una CA radice attendibile. Il tuo software specifico può eseguire questo controllo, ma in generale una macchina non ha bisogno di sapere chi è la CA; ad esempio, è possibile configurare IIS per fornire un determinato certificato TLS senza dover comunicare a IIS la CA radice che lo ha emesso. Il browser web che si connette al tuo sito controllerà sicuramente che il certificato sia collegato a una radice di cui il browser si fida, ma non ti interessa davvero .

Se è importante per te ricontrollare che la CA abbia emesso il certificato correttamente e che provenga dalla CA che ti aspettavi, ti suggerisco di verificarlo manualmente utilizzando i openssl x509comandi.


L'ultima serie di domande che chiedi riguarda il funzionamento delle firme digitali. Vale la pena fare una seconda domanda poiché è un argomento ampio di per sé.

Abbiamo una risposta canonica su come funziona TLS e su come utilizza i certificati, vi rimando a quel thread per ulteriori letture. Non ci hai detto se il tuo software utilizza TLS o qualche altro protocollo crittografico, ma se comprendi TLS, gli altri sono tutti simili.

  • Come funziona SSL / TLS?