L'handshake failure avviene prima che passi qualsiasi dato: client e server non trovano un accordo su come cifrare. Cause tipiche:
- nessun protocollo in comune: il server accetta solo TLS 1.2+ e il client è antico (Java vecchio, sistemi embedded, XP…) – o viceversa, il server è il fossile
- nessun cifrario in comune (
SSL_ERROR_NO_CYPHER_OVERLAP): suite troppo ristrette da un lato o obsolete dall'altro - SNI mancante: client datati non dichiarano il nome host e ricevono il certificato sbagliato su server multi-dominio
- intercettazioni di mezzo: proxy aziendali o antivirus che fanno MITM dichiarato e lo fanno male
Diagnosi in un comando: openssl s_client -connect host:443 -servername host dice esattamente dove muore la trattativa; il test SSL Labs dà il quadro completo. La regola per chi gestisce server: TLS 1.2+1.3 con le suite raccomandate – né trofei vintage, né restrizioni da collezionista che tagliano fuori client legittimi.