Skip to main content
40

handshake_failure

FatalRFC 8446 §6.2

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