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

Che insegnare ai clienti a cercare il lucchetto come prova di legittimità è ormai un consiglio fuorviante. Dimostra la connessione, non la controparte. La cosa che vale la pena leggere è il nome di dominio nella barra degli indirizzi.

Un certificato gratuito dimostra esattamente quanto uno a pagamento - veda Let's Encrypt contro un certificato a pagamento.