Il certificato viene spesso descritto come ciò che rende sicuro un sito, e questo porta la gente a fidarsi di un lucchetto su un sito di cui non ci si dovrebbe fidare affatto. Dimostra due cose precise, e nessuna delle due è che l'attività sia onesta.
Che cosa dimostra
- Che sta parlando con il titolare di questo nome di dominio. Qualcuno ha dimostrato a un'autorità di certificazione di controllare quel dominio.
- Che nessuno nel mezzo può leggere o modificare il traffico. La connessione è cifrata e la sua integrità viene verificata.
Che cosa non dimostra
- Che l'azienda dietro il dominio esista, o sia affidabile.
- Che il sito non sia una pagina di phishing: i siti di phishing hanno certificati validi, e la maggior parte ce l'ha.
- Che l'applicazione sia sicura. Un certificato protegge il filo, non il codice che ci sta dietro.
Come si costruisce la prova
In tre modi, che dimostrano tutti il controllo del dominio: servire un file preciso a un dato URL, rispondere sulla porta 443 con un certificato preciso, oppure pubblicare un record TXT nel DNS. Solo l'ultimo consente di emettere un certificato jolly.
# what a certificate says about itself
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
La catena è l'altra metà
Il suo certificato è firmato da un intermedio, a sua volta firmato da una radice di cui il browser si fida già. Serva la catena in modo incompleto e alcuni client non riescono a verificarla - veda una catena di certificati incompleta.
Il che significa
Un certificato gratuito dimostra esattamente quanto uno a pagamento - veda Let's Encrypt contro un certificato a pagamento.