TLS handshake failure

← All guides

The TCP connection succeeded and the private conversation never started. That combination narrows the cause enormously, because it rules out everything below TLS.

What it looks like

A complete three-way handshake, a ClientHello naming the host the client wanted, and then either no ServerHello at all or an alert. The report grades it Degraded — the transport was faultless — and says “The private conversation never started”.

What it rules out

Routing, firewalls and reachability. All three already worked, or the TCP handshake could not have completed. Whatever is wrong is in the negotiation itself.

What causes it

What to do

One command usually names it: openssl s_client -connect HOST:443 -servername NAME. The alert it prints is the server's own explanation — handshake failure for no common version or cipher, unrecognized name for an SNI the server does not serve. Add -tls1_2 or -tls1_3 to test one version at a time.

Other guides