Skip to main content
DNS Checker(beta)

SSL Certificate Errors Reference

SSL Certificate Errors Reference: every SSL/TLS error code, with causes and fixes for browsers and servers.

Identify, understand, and fix SSL/TLS error codes. Browse browser certificate errors, TLS alert codes, and OpenSSL errors with step-by-step troubleshooting guides.

Last reviewed and updated: March 2026

Browser Errors

These errors appear in Chrome, Edge, Firefox, and Safari when the browser detects a problem with the server's SSL/TLS certificate or the secure connection setup. They block the page load and require user action to proceed.

TLS Alert Codes

TLS alerts are protocol-level messages defined in RFC 8446 that communicate errors during the TLS handshake or session. These appear in server logs, packet captures, and debugging tools like openssl s_client.

handshake_failure (40)critical

TLS Handshake Failure

The TLS handshake could not be completed because the client and server failed to negotiate acceptable security parameters.

bad_certificate (42)critical

Bad Certificate

A certificate in the TLS handshake was corrupt, contained invalid signatures, or could not be parsed.

unsupported_certificate (43)critical

Unsupported Certificate

The certificate type is not supported by the TLS implementation or does not meet the required criteria.

certificate_revoked (44)critical

Certificate Revoked

The TLS peer determined that the presented certificate has been revoked by its issuing Certificate Authority.

certificate_expired (45)critical

Certificate Expired

The TLS peer rejected the certificate because it has passed its expiration date.

certificate_unknown (46)critical

Certificate Unknown

The certificate was rejected for a reason not covered by other specific TLS certificate alerts.

illegal_parameter (47)critical

Illegal Parameter

A field in a TLS handshake message contained an out-of-range or inconsistent value.

unknown_ca (48)critical

Unknown Certificate Authority

The certificate chain could not be validated because the root CA is not in the peer's trust store.

access_denied (49)critical

Access Denied

The TLS handshake was rejected because the peer determined the sender is not authorized to proceed.

decode_error (50)critical

Decode Error

A TLS message could not be decoded because a field was out of range or the message length was incorrect.

protocol_version (70)critical

Protocol Version Not Supported

The TLS protocol version offered by the client is not supported by the server.

insufficient_security (71)critical

Insufficient Security

The server rejected the cipher suites offered by the client because they do not meet minimum security requirements.

OpenSSL Errors

OpenSSL errors are returned by the OpenSSL library used in most server-side TLS implementations. These appear in application logs, curl output, and when debugging TLS connections from the command line.

How Does the TLS Handshake Work?

Every HTTPS connection begins with a TLS handshake — a series of messages between the client and server that establish the encrypted channel. Understanding this process is essential for diagnosing SSL/TLS errors because each error maps to a specific stage of the handshake.

TLS 1.2 Handshake (2 round trips)

The client sends a ClientHello with supported versions, cipher suites, and extensions. The server responds with ServerHello (choosing a cipher and version), its certificate chain, and a ServerKeyExchange for Diffie-Hellman. The client verifies the certificate, sends its key exchange value, and both sides derive the session keys. ChangeCipherSpec messages signal the switch to encrypted communication. This takes two network round trips before encrypted data can flow.

TLS 1.3 Handshake (1 round trip)

TLS 1.3 combines the ClientHello and key share into one message. The server responds with ServerHello, its key share, the certificate, and a Finished message — all in a single flight. The client verifies and sends its Finished message. The entire handshake completes in one round trip. TLS 1.3 also supports 0-RTT for resumed connections, allowing encrypted data to be sent with the very first message.

1
ClientHello

The client sends its supported TLS versions, cipher suites, key shares (TLS 1.3), and extensions including SNI (Server Name Indication). Errors here: protocol_version if no version overlap.

2
ServerHello + Certificate

The server selects a protocol version and cipher, then sends its certificate chain. Errors here: handshake_failure if no common cipher, ERR_CERT_* if certificate validation fails.

3
Certificate Verification

The client validates the certificate chain: checks dates, domain name match, CA trust, revocation status, and chain completeness. Most SSL errors occur at this stage.

4
Key Exchange + Finished

Both sides complete the key exchange and derive session keys. The Finished messages verify the handshake was not tampered with. Errors here: illegal_parameter, decode_error.

5
Encrypted Application Data

The handshake is complete and both sides can send encrypted data. Errors after this point (like SSL_ERROR_SYSCALL) are usually network-level, not TLS protocol errors.

What Is the Certificate Chain of Trust?

SSL/TLS security relies on a hierarchical trust model. Every certificate must be traceable back to a trusted root Certificate Authority through a chain of cryptographic signatures. Understanding this chain is critical for diagnosing certificate errors.

Root CA Certificate

Self-signed certificates from organizations like DigiCert, Let's Encrypt (ISRG Root), GlobalSign, and Sectigo. These are pre-installed in operating systems and browsers. There are roughly 150 root CAs trusted by major browsers. Root CAs rarely sign end-entity certificates directly — they delegate to intermediates.

Intermediate CA Certificate

Signed by the root CA, intermediates act as delegates that actually issue certificates to customers. This layering protects the root key — if an intermediate is compromised, only it needs to be revoked, not the root. Your server MUST send intermediates during the TLS handshake. Missing intermediates are the most common certificate chain error.

Leaf (End-Entity) Certificate

The certificate issued for your specific domain. It contains your domain name(s) in the Subject Alternative Name (SAN) field, your public key, validity dates, and the intermediate CA's signature. This is what browsers validate against the URL. Leaf certificates cannot sign other certificates (the Basic Constraints extension prevents this).

When a browser receives a certificate chain, it verifies each link: the leaf certificate's signature is checked against the intermediate's public key, and the intermediate's signature is checked against the root's public key. If the root is in the browser's trust store, the entire chain is trusted. If any signature is invalid, any certificate is expired, or the root is not trusted, the browser shows a certificate error. You can inspect the chain with: openssl s_client -connect yourdomain.com:443 -showcerts

What Is the Difference Between Certificate and Protocol Errors?

SSL/TLS errors fall into two broad categories. Knowing which type you are dealing with immediately narrows down the troubleshooting path:

Certificate Errors

  • When they occur: After the TLS handshake has successfully negotiated a protocol version and cipher, but the certificate validation fails.
  • Examples: ERR_CERT_DATE_INVALID, ERR_CERT_AUTHORITY_INVALID, ERR_CERT_COMMON_NAME_INVALID, ERR_CERT_REVOKED, unknown_ca, certificate_expired.
  • Fix: Renew, reissue, or reconfigure the certificate. Check the certificate chain, domain names, and CA trust. Use DNS Inspector to verify CAA records.

Protocol Errors

  • When they occur: Before or during the TLS handshake, when the client and server fail to agree on how to communicate securely.
  • Examples: ERR_SSL_PROTOCOL_ERROR, ERR_SSL_VERSION_OR_CIPHER_MISMATCH, handshake_failure, protocol_version, insufficient_security.
  • Fix: Update TLS configuration to support modern protocol versions and cipher suites. Use Port Scanner to verify port 443 is open.

A quick way to tell them apart: if the error message contains the word "certificate" or "cert," it is a certificate error — the TLS handshake reached the certificate validation stage. If the error mentions "protocol," "cipher," "handshake," or "version," it is a protocol error — the handshake failed before certificate validation could begin.

Troubleshoot SSL/TLS Errors with Free Tools

Diagnose certificate, handshake, and configuration issues with these free diagnostic tools.

Related Error Code References

SSL/TLS errors frequently surface alongside HTTP status codes, Cloudflare edge errors, and server-side log entries. These companion references help diagnose the full picture.

Frequently Asked Questions