Skip to content
RU

ERR_SSL_VERSION_OR_CIPHER_MISMATCH: Causes and How to Fix It

What it means: Chrome and the server found no TLS version, cipher or certificate they could both use for this hostname.

  1. Retry with antivirus HTTPS scanning and VPN off.
  2. Fails everywhere? Only the site owner can fix it.
  3. Owner: enable TLS 1.2 and 1.3, modern ciphers.
  4. Behind Cloudflare: check the edge certificate covers the hostname.

Test your URL now

Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.

Check your site's SSL →

What ERR_SSL_VERSION_OR_CIPHER_MISMATCH means

ERR_SSL_VERSION_OR_CIPHER_MISMATCH is Chromium net error -113: “The client and server don't support a common SSL protocol version or cipher suite.” Chrome shows “This site can't provide a secure connection” and “host uses an unsupported protocol.” The handshake fails at its very first exchange, before any certificate is validated.

Chrome raises it when the server picks a TLS version Chrome no longer accepts, when no cipher suite overlaps, when the server answers with a protocol_version or insufficient_security alert, and when the server rejects the ClientHello itself with a handshake_failure alert. That last case is how most servers and CDNs respond when they have no certificate at all for the requested hostname, so the name of the error is misleading: on a modern stack, a missing certificate is the most common cause. It is not a certificate-name mismatch (that is ERR_CERT_COMMON_NAME_INVALID) and not an expired or SHA-1 certificate (those are other ERR_CERT_* codes).

Causes in Chrome, Edge, Firefox and Safari

BrowserWhat you seeMost common trigger
Chrome, Edge, Brave, OperaERR_SSL_VERSION_OR_CIPHER_MISMATCH, “uses an unsupported protocol”No certificate for the hostname, or a TLS 1.0/1.1-only server
FirefoxSSL_ERROR_UNSUPPORTED_VERSION (old TLS) or SSL_ERROR_NO_CYPHER_OVERLAP (no shared cipher)Same server-side causes
Safari“Safari can't establish a secure connection to the server”Same server-side causes
  • No certificate for this hostname. Cloudflare's documentation names this as the usual cause on its network: the edge certificate is not active yet, a custom certificate expired, or the hostname is a multi-level subdomain such as a.b.example.com that Universal SSL does not cover.
  • Server limited to TLS 1.0 or 1.1. Chrome removed both in version 84 (2020); Chromium's own error list notes that TLS 1.0/1.1 now cause this error. Typical on old appliances, NAS boxes, printers and unpatched Windows Server builds with TLS 1.2 disabled.
  • Only obsolete cipher suites. RC4 and export suites are long gone, and Chrome's cipher string explicitly excludes 3DES and the CBC-mode ECDSA suites with an SHA-1 MAC. A server whose list contains only such suites shares nothing with Chrome.
  • Certificate and cipher list do not fit, for example an ECDSA certificate with only RSA cipher suites enabled.
  • TLS interception by antivirus or a corporate proxy with an outdated TLS library, which fails toward the browser.

Behind Cloudflare, nginx or another proxy

When a CDN or load balancer terminates TLS, the browser only negotiates with it, so its certificate coverage and TLS settings are what matter.

Cloudflare

  • Open SSL/TLS > Edge Certificates and confirm a certificate is Active and lists the exact hostname. Proxied DNS records that no certificate covers are flagged “This hostname is not covered by a certificate”.
  • Second-level subdomains (a.b.example.com) need an advanced or custom certificate.
  • If you need the site up immediately while a certificate activates, Cloudflare's documented workaround is to pause Cloudflare temporarily.
  • Check Minimum TLS Version on the same page; a high minimum shuts out clients that cannot reach it.

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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;

Since nginx 1.23.4 the default ssl_protocols already includes TLSv1.2 and TLSv1.3, so on a current nginx the usual culprit is an inherited, hand-written list. Apache equivalent: SSLProtocol -all +TLSv1.2 +TLSv1.3. Note that TLS 1.3 suites are configured separately from ssl_ciphers and are always available when TLS 1.3 is on.

If you own the site

  1. Test each version with SNI:
    openssl s_client -connect example.com:443 -servername example.com -tls1_2 -brief </dev/null
    openssl s_client -connect example.com:443 -servername example.com -tls1_3 -brief </dev/null
    # "alert protocol version"  -> that version is disabled
    # "alert handshake failure" -> no cert for this name or no shared cipher
  2. List what the server accepts: nmap --script ssl-enum-ciphers -p 443 example.com or testssl.sh example.com. You need at least one ECDHE suite with AES-GCM or ChaCha20 under TLS 1.2, plus TLS 1.3.
  3. Check the name is covered: repeat the handshake with each hostname you serve (apex, www, deeper subdomains). If one name fails and another works on the same IP, the server has no certificate for it.
  4. Apply the config above, then nginx -t && systemctl reload nginx. On hardware you cannot upgrade, put a reverse proxy with a current TLS stack in front of it.
  5. On Windows Server, confirm TLS 1.2 is enabled for SChannel and that IIS has a binding with a certificate for this hostname.

If you are a visitor

  • Update the browser and the OS; an old build may lack cipher suites the server now requires.
  • Turn off antivirus HTTPS or web scanning briefly and retry; if that fixes it, update the product.
  • Try mobile data. Success there means a proxy or filter on your usual network is negotiating TLS for you.
  • Do not re-enable TLS 1.0 or old ciphers in the browser: Chrome has no switch for it, and it would only make the connection weaker.

Clearing cache, cookies or SSL state does not help. If every browser on every network fails, the server or CDN configuration is the cause.

How to confirm the fix

openssl s_client -connect example.com:443 -servername example.com -brief </dev/null
# Protocol version: TLSv1.3
# Ciphersuite: TLS_AES_128_GCM_SHA256
curl -sv --tlsv1.2 --tls-max 1.2 https://example.com/ -o /dev/null

Repeat for every hostname and for IPv6 if you publish AAAA records. The SSL/TLS checker shows the negotiated protocol, cipher and certificate from outside your network.

Related errors

CertificateExpiry, issuer, domains (SAN)
ChainIntermediate and root CA validation
TLS ProtocolTLS version and cipher suite
VulnerabilitiesHeartbleed, POODLE, weak ciphers

Why teams trust us

TLS 1.3
supported
Full
CA chain check
3,158
checks in 30 days
30/14/7
days-to-expiry alerts

How it works

1

Enter domain

2

TLS chain verified

3

Expiry date & vulnerabilities

What Does the SSL Check Cover?

SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.

Certificate Details

Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).

Chain of Trust

Full chain verification: from leaf certificate through intermediates to root CA.

TLS Analysis

Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.

Expiry Alerts

Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.

DV vs OV vs EV Certificates

DV (Domain Validation)
  • Confirms domain ownership only
  • Issued in minutes automatically
  • Free via Let's Encrypt
  • Suitable for most websites
  • Most common certificate type
OV / EV
  • Organization (OV) or Extended Validation (EV)
  • Issued in 1-5 business days
  • Costs $50 to $500/year
  • For finance, e-commerce, government sites
  • Increases user trust

Who uses this

DevOps

SSL certificate monitoring

Security

TLS config audit

SEO

HTTPS as ranking factor

E-commerce

customer trust

Common Mistakes

Expired certificateBrowsers block sites with expired SSL. Set up auto-renewal or monitoring.
Incomplete certificate chainWithout intermediate CA, some browsers and bots cannot verify the certificate.
Mixed content on HTTPS siteHTTP resources on an HTTPS page — the browser lock icon disappears, reducing trust.
Using TLS 1.0/1.1Legacy TLS versions have known vulnerabilities. Use TLS 1.2+ or 1.3.
Domain mismatch in certificateThe certificate must cover all site domains, including www and subdomains.

Best Practices

Set up auto-renewalLet's Encrypt + certbot with cron — certificate renews automatically every 60-90 days.
Enable HSTSStrict-Transport-Security header forces browsers to always use HTTPS.
Use TLS 1.3TLS 1.3 is faster (1-RTT handshake) and safer — legacy ciphers removed.
Monitor expiration datesCreate a monitor on Enterno.io — get notified well before expiration.
Verify chain after renewalAfter certificate renewal, confirm that intermediate certificates are installed.

Get more with a free account

SSL certificate monitoring, check history and alerts 30 days before expiry.

Sign up free

Learn more

Sources

Frequently Asked Questions

How do I tell a missing certificate from a TLS version problem?

Run openssl s_client with -tls1_2 and -tls1_3 and the hostname in -servername. "alert protocol version" means that version is disabled; "alert handshake failure" means no certificate for the name or no shared cipher, so repeat with another hostname on the same IP.

Why does only one subdomain show the error?

That hostname has no certificate. On Cloudflare this is typical for multi-level subdomains such as a.b.example.com, which Universal SSL does not cover; on your own server, the name is missing from the certificate or virtual host.

The site worked for years. Why does it fail now?

Either the browser dropped what the server relied on, such as TLS 1.0/1.1 in Chrome 84 or 3DES suites, or a certificate expired or was removed so the server no longer has one for that name.

Does clearing the SSL state or browser cache help?

No. The failure happens in the first handshake message exchange and depends only on the server's configuration and the browser's supported versions and ciphers.

Is TLS 1.2 still acceptable?

Yes. TLS 1.2 with ECDHE and AES-GCM or ChaCha20 is supported by every current browser. Enable TLS 1.3 alongside it; only TLS 1.0 and 1.1 should be off.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.