Paghi una autorità di certificazione (CA) a firmare un certificato che certifica che una determinata chiave pubblica corrisponde a un particolare nome host che controlli.
Non è necessario un certificato firmato per ottenere la riservatezza tra te e alcuni server di destinazione. Hai solo bisogno della chiave pubblica del tuo partner di comunicazione.
Il problema fondamentalmente difficile che un certificato firmato risolve non è riservatezza ma identità . Supponiamo che un cliente tenti di parlare con example.com
. Il cliente si connette ad alcuni server e quel server fornisce una chiave pubblica per le comunicazioni riservate. Se la chiave non è firmata da un'autorità fidata, tuttavia, come fai a sapere che il server con cui stai parlando è in realtà example.com
?
Per ottenere un certificato firmato, vai a un'autorità di certificazione e fornisci una chiave pubblica, un nome host e prove sufficienti che sei l'operatore del nome host. Se la CA è soddisfatta delle tue prove, rilascia un certificato firmato che collega la tua chiave pubblica al tuo nome host, che chiunque può verificare. Sulla base di tale certificato, l'utente apprende che la CA (di cui l'utente si fida già) asserisce un abbinamento tra la chiave pubblica ricevuta e il nome dell'host a cui stanno cercando di parlare.
Non c'è modo per il sistema di un utente di sapere che example.com
e myapp.herokuapp.com
sono lo stesso servizio. (Confrontare gli indirizzi IP non è utile, perché più siti possono essere ospitati dallo stesso IP, variando il contenuto dall'intestazione della richiesta Host
.) I nomi degli host sono diversi, quindi è necessario un certificato separato per ciascun nome.
È possibile che tu agisca come se fossi CA e produci un certificato autofirmato. Tuttavia, chiunque può produrre un certificato autofirmato, quindi non fornisce alcuna prova di identità. Il tuo sistema operativo ha un elenco di CA attendibili, che generalmente consideriamo discernere quando firmano i certificati. Quando un utente vede un certificato firmato da una CA attendibile, l'utente può essere ragionevolmente sicuro che la CA ha fatto la dovuta diligenza nel verificare che la chiave pubblica sia quella corretta per quel dominio.