Un certificato è dati pubblici; le persone continuano a mostrarle a vicenda. Quando parli con un server SSL, una delle prime cose che fa il server è mostrare il suo certificato. Per nessuno.
Quindi, mostrare un certificato non prova la tua identità. Ciò che conta è la chiave privata . La chiave privata è non nel certificato (*). Calcolando una firma, dimostrerai la padronanza della chiave privata, cioè dimostrerai di essere te stesso.
Il certificato stesso è un contenitore per la chiave pubblica. Quando guardo il certificato di Google (quello che usano per i loro server), posso convalidarlo (contro le chiavi pubbliche di CA) per ottenere una certa sicurezza sui contenuti del certificato, che ammontano davvero a: " questo pubblico la chiave è di proprietà di quell'entità ". Imparo così la chiave pubblica di Google. Tuttavia, non mi dice affatto che chiunque mi abbia consegnato quel certificato è Google! Tutti possono ottenere il certificato di Google; puoi persino vederlo nel tuo browser Web semplicemente collegandoti al loro server. Quello che mi dice che sto davvero parlando con il server di Google è che il server sembra essere in grado di produrre una firma valida su una sfida che sto inviando ad esso; e posso verificare quella firma con la chiave pubblica di Google (e conosco la chiave pubblica di Google grazie al certificato). Essere in grado di produrre una firma valida richiede la conoscenza della chiave privata - in tal caso, la chiave privata di Google, che, come suggerisce il nome, è nota solo a Google.
(*) C'è una notevole quantità di confusione implicita da alcune persone che chiamano "certificato" ciò che è realmente il certificato E la chiave privata corrispondente. La scomoda terminologia è purtroppo molto diffusa.