decrypt_error
decrypt_error (51) is sent when a cryptographic operation in the handshake fails – specifically when verifying a signature or a Finished message MAC. The data decrypted successfully at the record layer but the handshake cryptographic verification failed.
Alert Code
51
Level
Fatal
Standard
RFC 8446
Description
decrypt_error is distinct from bad_record_mac (which covers record-layer AEAD failures) – it specifically covers handshake-layer cryptographic failures. The most common trigger is a failed CertificateVerify signature verification: the server signed a handshake transcript with its private key, and the client's signature verification failed. This can happen if the server's certificate and private key don't match (a common deployment mistake), or if the handshake transcript hash diverges between client and server.
Common Causes
- –CertificateVerify signature does not verify against the certificate's public key
- –Server's certificate and private key don't match
- –Finished message MAC verification failed
- –Handshake transcript hash divergence between client and server