Error SSL · ssl
ERR_SSL_PROTOCOL_ERROR
The browser and server could not agree on how to encrypt the connection — usually because there is no certificate on that hostname yet.
Also seen as: This site can't provide a secure connection · SSL handshake failed · SSL_ERROR_NO_CYPHER_OVERLAP
What it actually means
Before any page loads over HTTPS, the browser and server negotiate: which TLS version, which cipher, and which certificate. ERR_SSL_PROTOCOL_ERROR means that negotiation failed outright.
The browser never got as far as requesting a page, so nothing about your files or your PHP is involved.
On shared hosting the overwhelming cause is timing: the certificate has not been issued yet. Certificate issuance requires DNS to be pointing at the host first, so for a few minutes after a domain change there is a window where the domain resolves but the certificate does not exist.
If you just changed DNS, wait ten minutes before debugging anything.
Why it happens
No certificate has been issued for this hostname
The most common cause by far. Certificates are issued per hostname, and issuance needs DNS pointing at the host so the certificate authority can validate ownership.
A certificate for example.com does not cover www.example.com unless both were included. Both need to exist.
The certificate expired
Let’s Encrypt certificates last 90 days and are meant to renew automatically. Renewal fails silently when DNS changed, the domain was removed from the account, or a redirect blocked the validation request.
Sites that worked for months and suddenly break on a Tuesday are usually this.
TLS version mismatch
Modern browsers refuse TLS 1.0 and 1.1. A server offering only those gets rejected before anything else happens. This affects old servers, not current shared hosting.
Something is intercepting the connection
Corporate proxies, some antivirus products, and public wifi captive portals inspect TLS by substituting their own certificate. When they do it badly you get this error on one machine or network while everyone else is fine.
How to fix it
1. Confirm DNS resolves to your host first
Certificate issuance cannot happen until it does. Check with the DNS propagation checker, or:
dig +short example.com @1.1.1.1
If that returns nothing or the wrong address, fix DNS and wait. The certificate follows automatically. See pointing a domain at your host.
2. Look at what the server is actually serving
curl -vI https://example.com 2>&1 | grep -E 'subject:|issuer:|expire'
That shows the certificate’s names and expiry. Three things to check:
expire datein the past — renewal failed. Reissue from your control panel.subjectdoes not list the hostname you typed — the certificate does not cover it.wwwand the bare domain are separate names.- No output at all — no certificate is being served.
3. Issue certificates for both www and non-www
Whichever one you redirect from still needs a valid certificate, because the browser completes the TLS handshake before it ever sees your redirect.
This catches people constantly: they redirect www to the bare domain, assume www needs no certificate, and every visitor typing www hits this error.
4. Test from another network
Load the site on mobile data with wifi off. If it works there but not on your usual network, the problem is local — an antivirus TLS scanner, a corporate proxy, or a captive portal — and nothing on the server needs changing.
5. Check the Cloudflare SSL mode
If Cloudflare is in front, set SSL/TLS → Overview → Full (strict). Flexible mode causes a redirect loop instead (too many redirects), and Off disables HTTPS entirely.
On CWP specifically
CWP issues a free certificate automatically for every subdomain and every custom domain, but only once DNS points at us — the certificate authority has to verify ownership first.
So the normal sequence for a custom domain is: point DNS, wait for it to resolve, then the certificate appears within a few minutes. Seeing this error immediately after a DNS change is expected. The Domains page in your control panel shows the live status of each certificate.
Related errors
-
REDIR
ERR_TOO_MANY_REDIRECTS
Two rules are sending the browser back and forth at each other, so it gives up after about twenty hops rather than looping forever. -
DNS
DNS_PROBE_FINISHED_NXDOMAIN
DNS has no record for this hostname at all — the browser never got as far as contacting a web server, so nothing about your hosting is involved yet. -
MIXED
Mixed Content blocked
Your page loaded over HTTPS but asks for images, scripts or styles over plain HTTP, so the browser blocks them or drops the padlock. -
CONN
ERR_CONNECTION_REFUSED
DNS worked and your browser found an address, but nothing at that address accepted the connection.
Post the exact error and your account name on the community forum — staff and other users answer there, and the thread helps the next person who hits this.