What it means: In Full (strict) mode Cloudflare could not validate your origin server's certificate.
Free online tool — SSL certificate checker: instant results, no signup.
Runs a full TLS check: handshake, protocol versions, certificate chain, trust and expiry.
Cloudflare returns 526 "when these two conditions are true: Cloudflare cannot validate the SSL certificate at your origin web server" and the zone's encryption mode is Full (strict) (Cloudflare: Error 526). The visitor's connection to Cloudflare is fine; the problem is the certificate on the connection from Cloudflare to your server, which visitors never see directly.
Full (strict) requires an origin certificate that is unexpired, "issued by a publicly trusted certificate authority or Cloudflare's Origin CA", and that "contains a Common Name (CN) or Subject Alternative Name (SAN) that matches the requested or target hostname" (Full (strict) mode). Plain Full mode, by contrast, does not validate the origin certificate "in any way". So 526 never appears in Full mode; a broken handshake there gives 525 instead.
| Cause | How to recognise it | Fix |
|---|---|---|
| Expired certificate | notAfter in the past; renewal job failed silently | Renew, then reload the web server so it serves the new file |
| Self-signed or private CA certificate | Issuer equals subject, or an internal CA | Use a public CA or Cloudflare Origin CA, or upload your CA to the Custom Origin Trust Store |
| Hostname not in the certificate | Certificate for example.com only, while www.example.com or a subdomain is proxied | Reissue with every proxied hostname in the SAN list |
| Incomplete chain | Server sends only the leaf, no intermediate | Serve the full chain file (for example fullchain.pem) |
| Revoked certificate | The CA revoked it after a key compromise or misissuance | Issue a new certificate with a new key |
| Wrong certificate chosen by SNI | The origin's default virtual host answers with another site's certificate | Add a server block for the hostname with its own certificate |
Cloudflare also lists two special contexts. With Cloudflare Gateway (Zero Trust), 526 means Gateway did not trust the destination's certificate or connection. And Workers subrequests to hostnames outside your zone that are not proxied by Cloudflare always use Full (strict), whatever the zone setting, so a Worker can get 526 from an origin that loads fine in the browser.
openssl s_client -connect 203.0.113.10:443 -servername www.example.com -showcerts </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName Check the dates, the issuer and that the SAN list contains the proxied hostname.openssl s_client -connect 203.0.113.10:443 -servername www.example.com -verify_return_error </dev/null 2>&1 | grep -E 'Verify return code|depth' Verify return code: 0 (ok) is what Cloudflare needs. A code such as 20 (unable to get local issuer certificate) points to a missing intermediate.nginx -t && systemctl reload nginx.| Option | Trusted by | Good for |
|---|---|---|
| Public CA certificate (for example Let's Encrypt) | Cloudflare and browsers | Origins that may also be reached without Cloudflare, or that you may un-proxy later |
| Cloudflare Origin CA certificate | Cloudflare only | Origins that are only ever reached through Cloudflare's proxy |
| Self-signed or private CA plus Custom Origin Trust Store | Cloudflare, after you upload the CA | Internal PKI you already run |
The Origin CA route removes renewals as a source of 526, but it ties the hostname to the proxy: if you switch a record to DNS-only, visitors immediately get browser certificate errors. A public certificate keeps both paths working at the cost of automated renewal, which is exactly the job that, when it fails silently, produces the expired-certificate variant of 526. Whichever you pick, monitor the origin certificate's expiry separately from the edge certificate, because Cloudflare renews only its own.
openssl s_client -connect 203.0.113.10:443 -servername www.example.com </dev/null 2>&1 | grep 'Verify return code'
# Verify return code: 0 (ok)
curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/
# 200Run the first command for every proxied hostname. To check the origin certificate from outside your network, enter a DNS-only (grey-cloud) hostname of the origin into the SSL checker: for a proxied name it would show Cloudflare's edge certificate instead.
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.
Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).
Full chain verification: from leaf certificate through intermediates to root CA.
Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.
Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.
SSL certificate monitoring
TLS config audit
HTTPS as ranking factor
customer trust
www and subdomains.Strict-Transport-Security header forces browsers to always use HTTPS.SSL certificate monitoring, check history and alerts 30 days before expiry.
Sign up freeThe browser sees Cloudflare's edge certificate, not your origin's. The origin certificate is only checked by Cloudflare, so it can be expired or incomplete while the site still looks secure.
It removes the error but stops Cloudflare from validating the origin certificate, which allows a third party to impersonate the origin. Use it only as a short workaround.
Yes. Full (strict) accepts certificates from publicly trusted CAs and from Cloudflare Origin CA, which browsers do not trust but Cloudflare does.
Only if you upload it, or its CA, to the Custom Origin Trust Store. Otherwise Cloudflare rejects it with 526.
Workers subrequests to hostnames outside your zone that are not proxied by Cloudflare always use Full (strict), so they validate a certificate the zone setting would let through.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.