ERR_SSL_PROTOCOL_ERROR: what it means and how to fix it

ERR_SSL_PROTOCOL_ERROR means the browser and the server could not agree on a secure (TLS) connection, so the handshake failed before any page loaded. The cause is usually the server's HTTPS setup, but a visitor's clock, antivirus or network can break it too.

Common causes

  • The server does not serve HTTPS on port 443, or serves plain HTTP there.
  • The server offers only old protocol versions (SSL 3, TLS 1.0 or 1.1) that browsers no longer accept.
  • No certificate is configured for this hostname on a server that hosts several sites.
  • A proxy, load balancer or CDN between the visitor and the server is misconfigured for TLS.
  • On the visitor's side: a wrong system clock, antivirus that scans HTTPS, or a network that intercepts traffic.

If it is your site

  1. Confirm the server speaks TLS on port 443 for this hostname, for example with openssl s_client -connect example.com:443 -servername example.com.
  2. Enable TLS 1.2 and TLS 1.3, and turn off SSL 3, TLS 1.0 and TLS 1.1.
  3. Make sure the virtual host for this exact name has a certificate and a private key configured.
  4. If you use a CDN or proxy, check that its SSL mode matches what the server behind it serves.

If you are a visitor

  1. Check that your computer's date and time are correct.
  2. Turn off HTTPS scanning in your antivirus for a moment, or try another browser.
  3. Try another network: public and office Wi-Fi sometimes intercept HTTPS.
  4. Run the check above: if the handshake works from our server, the problem is likely local. A site can also block or treat some networks, IP ranges or countries differently.

Other error guides