Build your WordPress website with Elementor.Discover Elementor Affiliate link
Français

Site appearance

Failures and errors · Intermediate

Cloudflare errors 525 and 526 on WordPress: repair origin TLS

Does Cloudflare show 525 or 526 on WordPress? Identify the origin server, check its certificate and TLS negotiation, then verify the repair.

Source published: · Source updated: · Editorial policy

Read the French edition

Understand which connection fails with 525 or 526

A Cloudflare page reports “SSL handshake failed” with code 525, or “invalid SSL certificate” with 526, instead of your WordPress site. The visitor-to-Cloudflare route may work while the next connection fails. The origin server is the destination Cloudflare contacts to obtain the site.

Code 525 indicates a TLS negotiation failure between Cloudflare and that origin. Code 526 indicates failure to validate the origin certificate, particularly in Full (strict) mode on the ordinary proxy route. These codes guide diagnosis without identifying the faulty file or setting on their own.

The aim is to restore an encrypted connection to a correctly identified origin. A WordPress redirect plugin or page purge does not repair this negotiation, which occurs before WordPress normally processes the request. If the browser directly displays a certificate warning without a Cloudflare page, instead revisit diagnosis of the certificate presented to the visitor. This guide covers a site passing through the Cloudflare proxy, not Gateway policies or special Workers subrequests.

Preserve evidence before changing the service

Record the exact code, requested hostname, affected public path, time with timezone, and Ray ID when displayed. Note whether the defect affects all access or appears intermittently. A screenshot of an old error does not necessarily describe the state at the next check.

Compare the start of the incident with a known change: migration, certificate renewal, new origin, changes to its TLS service, or routing-rule changes. Keep these hypotheses separate from observed facts. A site returning by itself does not establish that the last button used corrected the cause.

  1. Keep a private copy of domain and origin settings before intervention.
  2. Identify the server administrator and the person managing Cloudflare.
  3. Request origin TLS errors for the relevant times.
  4. Remove tokens, cookies, and private parameters from screenshots.
  5. Prepare a targeted change and rollback to its previous configuration without deleting still-usable certificates or their keys.

Record the affected domain’s SSL/TLS mode

In the usual Cloudflare account, select the correct domain, then SSL/TLS and Overview. Record the effective mode and have rules checked that may alter behavior for a particular hostname or route. Do not apply a value to the entire zone to diagnose one host.

Full (strict) adds origin-certificate validation. In particular, the origin must present correct time validity, an identity matching the targeted hostname, and an accepted chain of trust. The public certificate received by the browser does not prove that this second connection meets those criteria.

Keep the intended validation level during investigation. Switching from Full (strict) to Full may make a certificate refusal disappear without repairing its identity or trust; Flexible changes the route to the origin further. These changes are not our repair procedure. Keep the mode, hostname, and any effective rules in the record sent to the operator. If the observed result contradicts zone settings, first verify the account and actual route used.

Confirm the correct origin before renewing its certificate

In Cloudflare records and routing, compare the failing hostname’s destination with private hosting information. For a proxied hostname, addresses visible in public resolution may belong to Cloudflare: they do not directly provide the WordPress server address to test.

A migration may leave an old destination or a node different from the one where the certificate was installed. Have all active origins, their ports, and the hostname sent during connection confirmed. With load balancing or an origin rewrite, the DNS record alone does not necessarily describe the whole route.

  1. Record the exact hostname producing the error, with or without www.
  2. Have the hosting owner confirm the expected destination and port.
  3. Compare this reference with routing configured for that hostname.
  4. If a difference is proven, correct only the affected destination after backing up.
  5. Check again before issuing another certificate. Preserve other records, especially email records, and keep the origin address in private communications.

Examine the certificate actually served by each origin

For a 526 refusal, ask the provider to read the certificate presented on the relevant connection, rather than the one merely stored in its panel. An issued certificate may be assigned to the wrong site or not loaded on every machine. Verification must retain the requested TLS hostname, called SNI.

Compare covered names, dates, and authority, then have revocation status and necessary intermediates checked. The chain links the server certificate to an accepted authority. A browser that has already cached an intermediate may succeed where another client fails: its success alone does not confirm a complete chain served by the origin.

If the origin presents another site’s certificate, correct the HTTPS service assignment first. If it presents the correct but expired certificate, examine renewal and installation. Record the precise difference in the ticket. Do not reissue several identical certificates without checking which is actually used; new issuance does not automatically change the server’s selection.

Perform a targeted origin read with curl

This optional check is reserved for the owner or operator, from access authorized to reach the origin. If it accepts only Cloudflare or requires specific authentication, have its owner perform the check; a direct refusal from your computer may be expected.

With a certificate recognized by curl’s trust store, the example keeps the domain in the URL while targeting a known origin address. Replace example.com and the documentation address 192.0.2.10 with confirmed values. --head requests headers and --max-time bounds the wait. On Windows, use the curl.exe executable if curl is a shell alias.

Do not replace the URL with the IP address: you would change the verified hostname and potentially certificate selection. Keep TLS verification active without adding -k. An HTTP response, even 403, indicates a different stage from certificate refusal; it does not prove complete WordPress functionality. Keep the result and time private without publishing the origin.

curl -q --head --max-time 20 --resolve "example.com:443:192.0.2.10" "https://example.com/"

Read TLS negotiation with the correct hostname

When the operator has OpenSSL and authorized access, s_client can observe the connection and certificates sent. The example targets the same documentation address as above and specifies both SNI and the hostname to verify. It must not be run against an origin chosen at random.

The -verify_return_error option is essential here: without it, this diagnostic tool can continue after verification errors. -showcerts displays certificates sent by the server; their presence alone does not mean their chain is validated. Keep the detailed result and end the session after recording it, using Ctrl+C if it remains open.

The local trust store may differ from Cloudflare’s, especially for Origin CA. A local failure therefore requires interpretation of the authority used, not removal of verification. Conversely, a successful connection from your computer does not reproduce every parameter or restriction on the Cloudflare route. Always correlate the result with server errors at the failure time.

openssl s_client -connect 192.0.2.10:443 -servername example.com -verify_hostname example.com -verify_return_error -showcerts

Repair an expired, misassigned, or incomplete certificate

If the destination is correct, first use the certificate mechanism already supplied by hosting. Have the expired certificate renewed or one issued covering the necessary names, then confirm installation on the HTTPS service actually terminating the connection. The issue date in a panel does not replace this post-installation read.

On a directly managed service, the operator must associate the certificate with its matching private key and required chain. For example, Nginx expects the server certificate before intermediates in the combined file intended for this purpose. Paths and application procedures depend on the server; do not copy a complete configuration from another host.

  1. Correct the identified defect instead of replacing everything.
  2. Check names, dates, chain, and key association in the provider’s private tools.
  3. Have the owner test configuration before applying it.
  4. Apply the change using the service procedure.
  5. Reread the certificate presented on every active origin, then check the public Cloudflare route while retaining the intended mode.

Choose Origin CA only for an appropriate route

A Cloudflare Origin CA certificate is an alternative for an origin intended for proxied traffic. It protects the Cloudflare-to-server route; it does not have browsers’ usual public trust. Disabling the proxy to open this origin directly may therefore create a separate warning even if the certificate suits Cloudflare.

If this solution matches the confirmed architecture, the administrator finds creation under SSL/TLS, Origin Server, then Origin Certificates and Create Certificate. They choose the required names and format, retain the certificate and key separately, then install them at the origin through the server-specific procedure. The generated key cannot be viewed again after closing the screen: private storage must be prepared.

For a local check, the owner can explicitly use the appropriate official Origin CA authority in the verification tool. Rejection by the default public store is insufficient to declare that certificate invalid for Cloudflare. It does not justify disabling all checks. If direct browser access is also required, have a certificate solution chosen that supports that access instead of changing the proxy during the incident.

Correct 525 negotiation using server traces

For a 525 error, request the TLS log from the component receiving Cloudflare: web server, load balancer, or another encrypted termination. It may refuse the connection before any line appears in the HTTP access log. Searching only the WordPress log may therefore reveal nothing useful.

The operator checks listening on the expected secure port, SNI selection, and a compatible TLS configuration. Cipher suites for the Cloudflare-to-origin route have their own documentation; browser-facing settings do not necessarily describe this connection. Have current parameters compared with failure messages without enabling old protocols in an attempt at blind compatibility.

If mutual authentication or Cloudflare-only access exists, the check must account for it. Do not remove this protection to obtain a green direct test. An expected network restriction and a negotiation failure are not interchangeable. For intermittent failures, look for a different node, configuration not applied everywhere, or an error coinciding with recorded times. Each lead must be confirmed by traces before modification; a 525 code alone does not establish a TLS version problem.

Apply one correction and retain a rollback option

Before application, the owner backs up the service configuration and identifies the still-usable certificate. They plan how to return to a previous valid assignment if the new configuration does not load. This preparation concerns the service terminating TLS, even if WordPress files are hosted elsewhere.

A file change is not necessarily active immediately. The provider uses its usual configuration check and application procedure, then confirms that the service still responds and presents the expected elements. Avoid a generic restart command: one server may host several sites and components.

  1. Communicate the exact scope to the service owner.
  2. Verify the backup of affected values and files.
  3. Have the correction tested and applied through the documented mechanism.
  4. Check recent errors and the certificate actually served.
  5. If the change fails, restore a known-valid configuration and confirm its application.
  6. If the old version already contains the defect, keep diagnosis open: returning to it is not a repair. Request a targeted correction or return to a prepared origin without globally weakening validation.

Validate the public route and relevant origins

After repair, open the usual public address while retaining the Cloudflare route. Check the failing hostname and variants actually used. A known page without external effects suffices for the first record; no payment or form submission is needed to verify a TLS connection.

Have operations confirm that a control request actually reached the repaired origin. A page already retained in a cache may display while the next server access will still fail. If several origins exist, each must be consistent; a few successful public accesses do not guarantee that every node received the correction.

Compare check times with server errors. The disappearance of 525 or 526 must accompany a connection complying with the intended mode. A new 403 or 500 means diagnosis has moved to a different stage, not that the entire site is restored. Keep authorized direct-check results separate from Cloudflare-route results. If the defect was intermittent, repeat a few spaced reads and examine the corresponding period in traces without running an intensive loop. Close the ticket only when evidence describes the same state on the relevant routes.

Prevent expiration and provide a useful incident record

After resolution, record who manages renewal and who deploys the certificate to every origin. These responsibilities may belong to two teams. Successful issuance automation does not guarantee installation in the component actually receiving Cloudflare.

Keep a private inventory of covered names, dates, and the monitoring mechanism. For Origin CA, arrange your own expiration check rather than assuming an alert will be sent. Check the Cloudflare route after every migration, TLS termination change, or routing modification; prepare the new destination’s certificate before it enters service.

If escalation is needed, provide the domain, code, times, available Ray ID, effective mode, and recent change. Attach targeted TLS errors and certificate observations through the provider’s private channel. Send neither private key, password, nor complete account export. Also state what has not been established, such as an unchecked node or a direct test prevented by legitimate protection. This precision lets support pursue a verifiable hypothesis and avoids conclusions based merely on the error temporarily disappearing.

Check covered names before issuing another certificate

The public hostname, SNI hostname, and names in the certificate must be compared explicitly. A certificate for www.exemple.test does not automatically cover exemple.test. Likewise, a wildcard *.exemple.test alone covers neither the bare domain nor a two-level name such as admin.boutique.exemple.test.

Ask the owner for one row per active origin: requested hostname, certificate actually presented, covered names, expiration date, and validation result. This record distinguishes correct issuance assigned to the wrong host from a certificate that genuinely fails to cover the expected name. Do not publish the origin’s private address or details of its keys.

If the hostname is covered and the date correct, continue to chain and trust; reissuing the same certificate without correcting its chain does not necessarily change anything. For Origin CA, use the check appropriate to that authority: rejection by your computer’s public store is not, by itself, proof of a Cloudflare error.

Expected success combines a compliant certificate on every origin and a request actually passing through Cloudflare to the corrected service. A cached page is insufficient. Rollback restores a known-valid assignment; it does not mean lowering the validation mode. No WordPress plugin participates in this TLS negotiation.

Sources and references

Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.

View 8 references

English translation of the reviewed French edition. Code examples retain their original identifiers, comments and output strings for reproducibility. Linked exercise files and original screenshots may contain French. No new practical tests or price checks are implied by translation.

Continue reading in English