handshake_failure
handshake_failure (40) is sent when the sender cannot negotiate an acceptable set of security parameters for the TLS handshake. No overlapping cipher suites, TLS versions, signature algorithms, or named groups were found between client and server. The connection cannot be established.
Alert Code
40
Level
Fatal
Standard
RFC 8446
Description
handshake_failure is the most common TLS error in misconfigured deployments. The client sends a ClientHello listing its supported cipher suites, TLS versions, and named groups. If the server finds no acceptable combination, it sends handshake_failure. Common scenarios: a server configured for TLS 1.3 only receiving a TLS 1.2 ClientHello, cipher suites not overlapping (e.g., server requires ECDHE but client only supports DHE), or signature algorithm mismatch (server has an ECDSA certificate but client only accepts RSA). Check server logs and use 'openssl s_client' to diagnose.
Common Causes
- –No overlapping cipher suites between client and server
- –TLS version mismatch (server requires 1.3, client sends 1.2 only)
- –Signature algorithm mismatch (ECDSA cert but RSA-only client)
- –No common named groups (elliptic curves) for key exchange
- –Client certificate required but not provided