Skip to content
RU

SSL_ERROR_PROTOCOL_VERSION_ALERT: Why the Server Refuses Your TLS Version

Laptop on a server room cart, cabled to a server, showing a terminal configuration

What it means: The server answered with TLS alert 70 (protocol_version): it refuses every TLS version Firefox offered.

  1. Reset security.tls.version prefs in about:config.
  2. Turn off antivirus HTTPS scanning, VPN or proxy.
  3. Fails on every network? Tell the site owner.
  4. Owner: enable both TLS 1.2 and TLS 1.3.

Test your URL now

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

Check your site's SSL →

What SSL_ERROR_PROTOCOL_VERSION_ALERT means

SSL_ERROR_PROTOCOL_VERSION_ALERT is a Firefox (NSS) error. The “Secure Connection Failed” page adds NSS's description: “Peer reports incompatible or unsupported protocol version.” It means the server sent the TLS alert protocol_version (number 70) in reply to Firefox's ClientHello: none of the TLS versions Firefox offered is acceptable to it, so it aborted the handshake before any certificate was exchanged.

The direction matters. If the server only speaks an old version and says so, Firefox itself rejects it with SSL_ERROR_UNSUPPORTED_VERSION. This alert is the opposite case: the server, or something in front of it, wants a version the client did not offer, or it cannot parse a modern ClientHello. Chrome reports the same alert as ERR_SSL_VERSION_OR_CIPHER_MISMATCH.

Causes in Chrome, Edge, Firefox and Safari

BrowserWhat you seeMost common trigger
FirefoxSSL_ERROR_PROTOCOL_VERSION_ALERTServer minimum version above what Firefox offered
Chrome, EdgeERR_SSL_VERSION_OR_CIPHER_MISMATCHSame alert, Chromium's name for it
Safari“Safari can't establish a secure connection to the server”Same alert, no code shown
  • Firefox's own version range was narrowed. Defaults are security.tls.version.min = 3 (TLS 1.2) and security.tls.version.max = 4 (TLS 1.3). A lowered maximum, often left over from old troubleshooting advice or set by an enterprise policy (SSLVersionMax), makes Firefox offer only TLS 1.2, and a TLS 1.3-only server answers with alert 70.
  • TLS 1.3-only server. ssl_protocols TLSv1.3; in nginx, a TLS 1.3-only security policy on a cloud load balancer, or a CDN minimum of 1.3 rejects every client that tops out at TLS 1.2: old browsers, embedded clients and many intercepting proxies.
  • Version-intolerant server or middlebox. Some old appliances cannot parse a TLS 1.3-style ClientHello and reply with protocol_version instead of negotiating TLS 1.2.
  • TLS interception on your side. Antivirus HTTPS scanning or a corporate proxy re-creates the connection with its own TLS library; if that library is older than the server's policy, the server's alert reaches you through it.

Safari and Chrome do not show the Firefox code, but the server-side causes and fixes are identical.

Behind Cloudflare, nginx or another proxy

The alert comes from whichever box terminates TLS for the browser. With a CDN or load balancer in front, check its version policy, not only the origin's.

  • Cloudflare: SSL/TLS > Edge Certificates > Minimum TLS Version. At 1.3, clients limited to TLS 1.2 are refused. 1.2 is the sensible floor for public sites.
  • AWS, Azure and GCP load balancers: the attached TLS or security policy decides the versions; pick one that allows TLS 1.2 and 1.3.
  • nginx: since 1.23.4 the default already includes TLSv1.2 and TLSv1.3, so remove hand-written TLS 1.3-only lines unless every client is known to support 1.3.
# /etc/nginx/conf.d/tls.conf
ssl_protocols TLSv1.2 TLSv1.3;

# Apache 2.4 (mod_ssl)
SSLProtocol -all +TLSv1.2 +TLSv1.3

If you own the site

  1. Find which versions the server accepts:
    openssl s_client -connect example.com:443 -servername example.com -tls1_2 -brief </dev/null
    # ... tlsv1 alert protocol version ... SSL alert number 70  -> TLS 1.2 refused
    openssl s_client -connect example.com:443 -servername example.com -tls1_3 -brief </dev/null
  2. Cross-check with curl: curl -sv --tls-max 1.2 https://example.com/ -o /dev/null reproduces what a TLS 1.2-only client experiences.
  3. Enable TLS 1.2 and 1.3 together on the TLS terminator (config above), reload with nginx -t && systemctl reload nginx or apachectl configtest && systemctl reload apache2.
  4. Old appliance in front? If a firewall, WAF or load balancer replies with alert 70 to a modern ClientHello, update its firmware or move TLS termination to a current reverse proxy.
  5. Check every hostname and IP, including IPv6: different virtual hosts or nodes behind a balancer can run different policies.

If you are a visitor

  • Open about:config, search security.tls.version, and reset any modified value (Firefox shows changed prefs in bold) to its default.
  • Check about:policies: if your organization pins SSLVersionMax, ask IT, as you cannot override it.
  • Update Firefox; very old builds do not offer TLS 1.3.
  • Temporarily turn off antivirus HTTPS scanning, the VPN or the proxy and retry; try mobile data to rule out the network.

Clearing the cache or cookies changes nothing here, and lowering security.tls.version.min does not help either: the server is asking for a newer version, not an older one. If every browser fails on every network, only the site owner can fix it.

How to confirm the fix

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
# both should print: CONNECTION ESTABLISHED

Then reload the page in Firefox with default TLS prefs. The SSL/TLS checker lists which protocol versions the server accepts, as seen 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

Is SSL_ERROR_PROTOCOL_VERSION_ALERT a problem with my computer or the website?

Usually the website, or a proxy in between. It is on your side only if Firefox's TLS prefs or policies were changed, or antivirus or a VPN intercepts HTTPS.

What is TLS alert 70?

It is the protocol_version alert defined in the TLS specification. A server sends it when the client offered no TLS version it is willing to use.

Should I set security.tls.version.min to 1 to make the site work?

No. This alert means the server wants a newer version, so allowing older ones does not help and weakens every other connection. Reset the prefs to default instead.

Why does Chrome show a different error for the same site?

Chrome maps the same protocol_version alert to ERR_SSL_VERSION_OR_CIPHER_MISMATCH. The cause and the server fix are the same.

Is TLS 1.2 still safe to keep enabled?

Yes. RFC 8996 deprecated only TLS 1.0 and 1.1. TLS 1.2 with ECDHE and AEAD ciphers remains acceptable, and keeping it next to TLS 1.3 avoids this alert for older clients.

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.