Payments are experiencing issues due to temporary restrictions in Russia. If your payment does not go through, please submit a support request.Our support team is available 24/7 — we are always here to help with hosting and server issues.We are now accepting requests for dedicated server rental and colocation services in our data center.Reminder: we recommend enabling backups for additional data protection.A new VPS/VDS lineup with NVMe storage and improved performance is now available.Maintenance work on some servers has been completed. All services are operating normally.
Article6 min readViews0

TLS Auto-Renewal Enabled, Yet Certificate Expires: What to Check

We examine the TLS auto-renewal chain: from launching the ACME client to the certificate on the CDN. The reader will receive a verifiable list of evidence and readiness criteria.

Comments 0

A metal key and a certificate sheet pass through a highlighted update mechanism against a background of server racks
In this article

If a certificate is nearing expiration, a single "auto-renewal enabled" status is insufficient. Verify five distinct stages: job initiation, domain validation, certificate issuance, installation in the service, and the certificate actually served to visitors. A failure at any step leaves the browser with the old expiration date, even if the control panel appears reassuring.

Where Auto-Renewal Specifically Fails

TLS automation is a chain, not a single button. The scheduler launches the ACME client, the certificate authority validates domain control, the client receives the new certificate, the service applies it, and load balancers and CDN begin serving the new version. Therefore, identify the failing stage first, then adjust settings.

Stage

What to Verify

Typical Failure

Success Criteria

Job start

Fresh attempt and next start time

Timer disabled; task runs on the wrong node

Recent attempt exists for the required domain set

Domain check

Successful ACME challenge for each name

HTTP-01 unavailable or TXT record not updated

Certificate authority confirmed all names

Certificate issuance

New serial number and later expiration date

Request rejected by the certificate authority

New certificate successfully issued

Installation

Service reads the new file after standard configuration application

Certificate issued but not connected to the service

Web server process uses the new certificate

Public endpoints

TLS connection results on each frontend and CDN

One node continues to serve the old certificate

All external endpoints show the expected serial number and validity period

Here is the interesting part: a successful exit code does not prove that a new certificate has been issued. The documentation for Certbot states that the update command can complete with code 0 even when certificates have not yet reached the renewal threshold. You need the log of the specific attempt, the new serial number, and a later expiration date.

Start with the Actual Certificate

First, record what an external client sees, not what is stored as a file on the server. This is the starting point for discussions with the hosting provider or administrator.

  • Hostname, port, and the exact time of the check.

  • Issuer, serial number or fingerprint, and start and end dates.

  • List of names in the certificate and chain completeness.

  • Public endpoint: origin server, load balancer, CDN, or other frontend.

  • Result for each endpoint when a single domain is served by multiple nodes.

For the first external check, use the SSL certificate checker tool: it shows the certificate actually being served. However, a single result does not verify all nodes behind the load balancer, so a distributed setup requires a list of endpoints and a repeatable check for each.

HTTP-01 and DNS-01 Require Different Conditions

In the Let's Encrypt verification description, HTTP-01 is tied to the availability of a helper file via port 80. If multiple frontends handle requests, the verification file must be accessible on each of them or routed to a single agreed location.

For DNS-01, the certificate authority searches for the TXT record _acme-challenge. The most common issues are DNS propagation delays, an incorrect zone, or overly broad and outdated DNS provider credentials. Let's Encrypt's Integration Guide for Integrators specifically recommends designing certificate storage and challenge delivery for multiple frontends rather than relying on a local file on a single node.

  • For HTTP-01, verify that port 80 is accessible from outside and that the challenge is issued consistently across all frontends.

  • For DNS-01, confirm which system updates the TXT record, whether the new record is visible to authoritative servers, and whether the key's permissions are restricted to the required zone.

  • For each name in the certificate, verify a separate successful result: one successful domain does not validate the others.

The CAA record answers a different question: which certificate authorities are permitted to issue certificates for the domain. According to RFC 8659, this is a restriction on issuance, not a browser check or a confirmation of auto-renewal health. The current CAA record may be correct, yet the challenge or installation can still fail.

The New File Exists, but Visitors See the Old One

After successfully issuing the certificate, verify the path from the file to the web server process. Certbot can only obtain the certificate; applying it to the web server is done by the installer or a deploy-hook. Such a hook runs after successful renewal; an error, incorrect path, or failure to apply the configuration as expected will leave the service on the old file.

Independently check the CDN, load balancer, and each frontend. A certificate on the origin server does not automatically update the certificate on an external CDN. In a cluster, one node may retain the old version, so random checks will intermittently pass or show an approaching expiration date.

How to Verify the Chain Safely

  1. Assign a certificate owner and compile a list of domain names, public endpoints, and systems where TLS terminates.

  2. Compare the schedule and the log of the last attempt. The absence of a recent attempt indicates a problem before contacting the certificate authority.

  3. Ask the administrator to perform a standard trial check via the certificate authority's staging environment. For a Certbot dry-run, verify receipt of a test certificate; installation must be checked separately, taking configured hooks into account.

  4. Confirm the selected challenge and its conditions: port 80 and routing for HTTP-01, or a TXT record, propagation, and minimum permissions for DNS-01.

  5. After actual renewal, compare the serial number, dates, and chain first in the service, then at each external endpoint.

  6. Configure a certificate warning based on the certificate actually served externally, allowing sufficient time for manual correction.

Do not launch multiple premature production certificate issuance requests in succession for testing: certificate authorities impose rate limits. A test environment is for diagnostics; issue the production certificate only after the root cause is resolved.

Readiness Criteria

Auto-renewal can be considered accepted when there is a fresh successful attempt for all names, a new certificate has been obtained, is applied normally, and each public endpoint serves the expected serial number and a later expiration date. Additionally, an external warning must trigger before the remaining time becomes critical.

  • The scheduler runs on the expected node.

  • The ACME challenge passes for each name.

  • A new certificate with verifiable dates and serial number has been obtained.

  • The service applied exactly the new file without an unplanned stop.

  • All frontends and CDN serve the same expected version.

  • External monitoring checks the actual TLS response, not just the presence of the file.

Sources and behavior of Certbot and Let's Encrypt were verified on November 5, 2026. For other ACME clients, parameter names and hooks may differ, so do not mechanically transfer steps.

Discussion 0

Share your experience and ask questions. Comments without links appear after editorial review.

No comments yet. Start the discussion.