ERR_SSL_VERSION_OR_CIPHER_MISMATCH: Causes and How to Fix It
Quick Answer: Fixing ERR_SSL_VERSION_OR_CIPHER_MISMATCH on Cloudflare
The ERR_SSL_VERSION_OR_CIPHER_MISMATCH error (shown in Firefox as SSL_ERROR_NO_CYPHER_OVERLAP) occurs when the client browser and the server (or Cloudflare edge proxy) fail to establish a secure Transport Layer Security (TLS) handshake because no common cipher suites or TLS protocol versions exist between them.

On Cloudflare-managed domains, this error most frequently occurs due to one of three issues:
- Unprovisioned Edge Certificate: The domain was recently added or updated, and the edge certificate has not finished provisioning to an Active status.
- Subdomain Depth Limitations: Free Universal SSL certificates only support the root domain (
example.com) and single-level subdomains (*.example.com). Multi-level subdomains such asdev.api.example.comare not covered by the default wildcard certificate. - Disabled or Broken Universal SSL: The Universal SSL feature was toggled off, leaving proxied DNS hostnames without an edge certificate.
To fix this, check SSL/TLS > Edge Certificates in the Cloudflare dashboard to ensure the certificate status is Active. If using multi-level subdomains, purchase Advanced Certificate Manager to enable Total TLS or generate custom certificates covering deeper hostname levels.
How the TLS Handshake Fails
When a web browser visits an HTTPS website, it sends a ClientHello message containing its supported TLS versions, supported cipher suites, and the requested domain name via Server Name Indication (SNI). The receiving server or CDN edge responds with a ServerHello, selecting the best mutually supported TLS version and cryptographic cipher.
If the edge proxy lacks an active certificate covering the exact hostname, or if the server and client share no compatible ciphers, the connection cannot proceed. Because Cloudflare terminates visitor TLS connections at the edge before proxying traffic back to your origin, the edge certificate must explicitly cover the hostname requested by the client.
Common Causes and Diagnostic Steps
| Root Cause | Diagnostic Indicator | Resolution |
|---|---|---|
| Universal SSL Pending or Inactive | Certificate status shows pending validation or inactive in the dashboard. | Wait for certificate issuance to finish, or toggle Universal SSL off and on to re-trigger validation. |
| Multi-Level Subdomain Depth | Hostname has two or more subdomain labels (e.g., sub2.sub1.example.com). | Enable Total TLS with Advanced Certificate Manager or create an Advanced Certificate covering the specific hostname. |
| Proxied Record Lacking Certificate | Cloudflare DNS shows a warning: This hostname is not covered by a certificate. | Issue an edge certificate covering that hostname or switch the DNS record to DNS-only (grey cloud) if edge proxying is unnecessary. |
| Mismatched Minimum TLS Version | Edge Minimum TLS Version is set higher than what legacy clients support. | Adjust Minimum TLS Version in Cloudflare to TLS 1.2 to maintain compatibility with modern client standards. |
Step 1: Check Edge Certificate Status
- Log in to the Cloudflare dashboard.
- Select your domain and navigate to SSL/TLS > Edge Certificates.
- Verify that the status of your certificate pack displays Active.
- If the status displays Pending Validation or Initializing, allow time for the Certificate Authority (CA) to complete Domain Control Validation (DCV).
Step 2: Resolve Multi-Level Subdomain Wildcard Issues
Cloudflare Universal SSL covers only two domain formats on full DNS setups:
- The zone apex:
example.com - First-level wildcards:
*.example.com(covering hostnames likeapp.example.comorwww.example.com)
Standard Universal SSL wildcards do not cover hostnames with multiple levels of subdomains, such as beta.api.example.com. If you proxy a multi-level subdomain through Cloudflare using Universal SSL, visitors will receive the ERR_SSL_VERSION_OR_CIPHER_MISMATCH error.
To secure multi-level subdomains on Cloudflare, use one of the following approaches:
- Total TLS: Using the Advanced Certificate Manager add-on, enable Total TLS to automatically issue individual edge certificates for every proxied hostname in your DNS settings.
- Advanced Certificates: Create an Advanced Certificate specifying the exact hostname (for example,
*.api.example.comorbeta.api.example.com). - Flattened Subdomain Structure: Reconfigure your architecture to use single-level subdomains (such as
beta-api.example.com) to remain within Universal SSL wildcard coverage.
Step 3: Re-trigger Universal SSL Issuance (If Stuck)
If an edge certificate remains stuck in an error or pending state indefinitely, you can cycle the Universal SSL feature to restart verification:
- In the Cloudflare dashboard, go to SSL/TLS > Edge Certificates.
- Scroll down to the bottom of the page to locate Disable Universal SSL.
- Click Disable Universal SSL and confirm the action.
- Wait approximately 5 to 10 minutes.
- Click Enable Universal SSL to initiate a fresh certificate request with the CA.
Step 4: Test Origin Server Connectivity Directly
When investigating whether an origin server configuration issue is contributing to SSL negotiation problems, run a direct curl test from your terminal to bypass the Cloudflare proxy and query your origin server IP directly:
curl -svo /dev/null --resolve example.com:443:203.0.113.10 https://example.com/Replace 203.0.113.10 with your origin server IPv4 address and example.com with your actual domain name.
If the direct origin connection succeeds with a valid TLS handshake but the proxied URL fails, the issue is isolated to Cloudflare edge certificate provisioning or subdomain depth configuration.
Important Operational Warnings
- Do Not Lower Global Security Protocols: Never downgrade modern server ciphers to deprecated protocols like SSLv3 or TLS 1.0 to resolve handshake warnings, as modern browsers reject legacy protocols outright.
- DNS Proxy Impact: Toggling a DNS record from Proxied (orange cloud) to DNS-only (grey cloud) exposes your origin IP address and serves your origin SSL certificate directly to clients instead of Cloudflare edge certificates. Ensure your origin has a valid public TLS certificate before switching proxy modes on live production traffic.