Saltar al contenido principal

Guías / Solucionarlo: guías para los errores que aparecen de verdad

ERR_SSL_VERSION_OR_CIPHER_MISMATCH: causes and fixes

ERR_SSL_VERSION_OR_CIPHER_MISMATCH means the browser and server both completed enough of the TLS handshake to compare supported protocol versions and ciphers, and found no overlap. It is a more specific case than a generic handshake failure: both sides talked, they just cannot agree on how to encrypt the connection.

What ERR_SSL_VERSION_OR_CIPHER_MISMATCH means

During a TLS handshake, the client's ClientHello lists every TLS version and cipher suite it is willing to use, and the server picks one from that list that it also supports. This error appears when the server's list and the client's list share nothing at all, most often because the server only offers old, deprecated options (TLS 1.0, TLS 1.1, or ciphers like RC4 or 3DES) that current browsers refuse to negotiate for security reasons. Modern browsers have been dropping support for those older options for years, so a server that never updated its TLS configuration increasingly fails this way against ordinary, up-to-date visitors.

How the error appears

Chrome and Edge show "This page isn't working - example.com sent an invalid response" or, more specifically, "ERR_SSL_VERSION_OR_CIPHER_MISMATCH." Firefox typically shows "Secure Connection Failed" with the code SSL_ERROR_NO_CYPHER_OVERLAP, which names the problem directly.

openssl s_client forcing a specific TLS version shows exactly which versions the server accepts and rejects:

openssl s_client -connect example.com:443 -tls1_2
CONNECTED(00000003)
...
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Verify return code: 0 (ok)
openssl s_client -connect example.com:443 -tls1
CONNECTED(00000003)
140... error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

A "protocol version" or "handshake failure" alert on one version and a clean connection on another pinpoints exactly which versions the server supports. nmap's SSL script goes further and lists every cipher the server offers at once:

nmap --script ssl-enum-ciphers -p 443 example.com
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_RSA_WITH_RC4_128_SHA - C
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - A

What causes ERR_SSL_VERSION_OR_CIPHER_MISMATCH

  • The server only offers TLS 1.0 or 1.1. Major browsers dropped default support for both versions years ago; a server that never updated its configuration now shares no common protocol version with a current browser.
  • The server only offers weak or deprecated ciphers, such as RC4 or 3DES, which browsers refuse to negotiate regardless of the TLS version offered alongside them.
  • A certificate or SNI mismatch on shared hosting. When several sites share one IP address and the server cannot match the requested hostname (Server Name Indication) to the right certificate and cipher configuration, it can fail the handshake instead of falling back correctly.
  • Cloudflare's "no SSL certificate for this hostname yet" state, which appears when a domain was added to Cloudflare and DNS was pointed there before certificate issuance finished; the edge has nothing valid to negotiate with for that hostname yet.
  • An old operating system or browser that itself only supports older TLS versions or ciphers, hitting a modern server that has (correctly) disabled them.

How to tell whose fault it is

Test from a different device or a different network first; if the site loads there, the visitor's own OS or browser is outdated. If it fails everywhere, including from a current, fully updated browser, the server's TLS configuration is the cause. An SSL check run from several locations reports the exact protocol versions and ciphers the server offers from each vantage point in one pass, which is faster than repeating the openssl commands manually from different networks.

How to fix ERR_SSL_VERSION_OR_CIPHER_MISMATCH

If you are a visitor

  1. Update your browser to the latest version; this resolves the client-side variant of the mismatch immediately.
  2. Update your operating system, especially on Windows 7 or older, or very old Android and iOS versions, where the system TLS library itself may be outdated regardless of the browser.
  3. Try a different device or network to confirm whether the problem travels with you or stays with the site.
  4. Contact the site owner if the failure is consistent everywhere you test; an outdated server configuration needs to be fixed on that end, not worked around from the browser.

If you run the site

  1. Set explicit modern protocol versions and ciphers. On nginx:
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_cipher off;
    Remove TLS 1.0, TLS 1.1, and any RC4 or 3DES cipher entries entirely rather than merely deprioritizing them.
  2. If a legacy client genuinely still needs TLS 1.0 or 1.1 (some older payment terminals or embedded devices do), serve it from a separate hostname or listener with its own accepted risk, rather than weakening the main site's configuration for every visitor.
  3. Check SNI configuration on shared hosting or a reverse proxy handling multiple certificates, confirming each server_name block maps to the correct certificate and that the proxy is not falling back to a default certificate that offers a different, incompatible cipher set.
  4. If using Cloudflare and this just started after adding the domain, check SSL/TLS > Edge Certificates in the dashboard for certificate issuance status; the "no SSL certificate for this hostname yet" state resolves itself once issuance completes, usually within minutes to a few hours.
  5. Reload after any change, and re-verify: nginx -t && systemctl reload nginx, then run the nmap or openssl commands above again to confirm the old versions and ciphers are actually gone, not just reordered.
  • ERR_SSL_PROTOCOL_ERROR is the broader, less specific handshake failure: a non-TLS response on the port, malformed handshake data, or interception software, rather than a clean version/cipher comparison that simply found no overlap.
  • ERR_CERT_DATE_INVALID happens after a certificate was actually received and read, one step later than this error, which never gets that far.

How to prevent ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Browser vendors periodically retire support for older TLS versions and ciphers on their own schedule, which means a server configuration that worked fine last year can start failing for a growing share of visitors without any change on the server side at all. A certificate and SSL check reports the negotiated protocol and cipher on every run, from 300+ checkpoints in 158 cities, catching a server that has drifted onto a deprecated configuration before it affects real traffic. HostTracker alerts by email, SMS, voice call, Slack, Telegram and more the moment a check fails.

Frequently asked questions

Is this the same as an expired certificate error?

No. This error happens during protocol and cipher negotiation, before the certificate itself is evaluated at all. An expired certificate would be a separate error that occurs one step later in the handshake.

Why does this only affect visitors on old computers?

Because an outdated OS or browser may only support TLS 1.0, TLS 1.1, or older ciphers, which a properly hardened modern server no longer offers, producing a clean version/cipher mismatch specific to that outdated client.

Should I re-enable TLS 1.0 to fix this for old visitors?

Generally no. TLS 1.0 and 1.1 have known weaknesses and most current browsers will not use them anyway, so re-enabling them mainly adds risk without restoring compatibility for the majority of affected visitors, whose actual problem is an outdated browser or OS.

What does the Cloudflare "no SSL certificate for this hostname yet" message mean specifically?

It means DNS for the domain is already pointing at Cloudflare but certificate issuance for that hostname has not completed, so there is nothing valid yet for Cloudflare's edge to present during the handshake. It typically resolves on its own once issuance finishes.

How do I know which ciphers my server currently offers without guessing?

Run nmap --script ssl-enum-ciphers -p 443 yourdomain.com, which lists every protocol version and cipher the server accepts along with a grade for each, rather than testing versions one at a time.

Compruébalo ahora

Ejecuta la comprobación gratuita en tu propio sitio, sin necesidad de cuenta.

SSL check

Monitoriza esto de forma permanente

Recibe un aviso en cuanto algo falle: HostTracker comprueba desde más de 300 ubicaciones y te avisa por correo, SMS, Slack, Telegram y más.

Funciones de HostTracker

Más en esta sección: Solucionarlo: guías para los errores que aparecen de verdad