Articles › Security

47-day TLS certificates: the 2026-2029 timeline and what to do now

TLS certificate lifetimes drop from 398 to 47 days by 2029, and Let's Encrypt now offers 6-day and IP certificates. The timeline, and how to automate renewal.

Beginner 6 min read October 23, 2026

What you will learn
  • Since 15 March 2026 public certificates can be issued for at most 200 days; 100 days from 2027 and 47 days from 2029
  • Let's Encrypt's default certificates go from 90 to 64 days in February 2027 and to 45 days in February 2028
  • A 47-day certificate needs renewing about once a month, which is not a manual job; automate it and alert when renewal fails
  • Let's Encrypt now issues 160-hour (shortlived) certificates and IP address certificates; both are opt-in

The certificates behind the padlock are getting shorter in steps: from 398 days to 47 days by 2029, under a CA/Browser Forum ballot that passed in April 2025. The first step already took effect on 15 March 2026. If you still renew by hand once a year, you will be doing it more and more often until manual renewal stops being realistic. This article sums up the schedule, what Let’s Encrypt is changing, and how to check that your server really renews by itself.

Facts checked against: CA/B Forum ballot SC-081v3, DigiCert’s summary and Let’s Encrypt announcements, as of October 2026. Commands are for Ubuntu 24.04 with certbot.

Why shorter

The stated reasons in SC-081 are to reduce the risk from misissued certificates and stale validation data, and to make it faster to switch cryptographic algorithms when needed. A long-lived certificate means that if a key leaks or a certificate is misissued, it stays usable for up to a year. Shorter lifetimes limit how long a bad certificate can be used.

The ballot passed on 11 April 2025: certificate issuers 25 yes, 0 no, 5 abstain; certificate consumers (browsers) 4 yes.

Before Mar 2026maximum 398 days15 Mar 2026200 days15 Mar 2027100 days15 Mar 202947 days
Maximum public certificate lifetime under SC-081

The SC-081 timeline

FromMax certificate lifetimeMax reuse of domain validation
Before 15 Mar 2026398 days398 days
15 Mar 2026200 days200 days
15 Mar 2027100 days100 days
15 Mar 202947 days10 days

The right-hand column matters as much. Domain control validation (DCV) is how you prove you control a domain, for example by serving a file or adding a DNS TXT record. From 2029 a validation can be reused for only 10 days, so almost every renewal also needs a fresh validation. If that step is still manual, it has to be automated too.

This is a ceiling for every public CA, including paid ones.

What Let’s Encrypt is changing

Let’s Encrypt has issued 90-day certificates for years, already under the ceiling, but it is going shorter:

DateProfileLifetimeValidation reuse
Todayclassic (default)90 days30 days
13 May 2026tlsserver (opt-in)45 daysnot stated
10 Feb 2027classic64 days10 days
16 Feb 2028classic45 days7 hours

Staging gets each change about a month before production, and you see the shorter lifetime at your first renewal after each date.

Also new: since 15 January 2026, short-lived certificates (the shortlived profile) and IP address certificates are generally available.

  • A shortlived certificate lasts 160 hours, just over six days. It is opt-in; Let’s Encrypt says there is no plan to make it the default.
  • IP address certificates (IPv4 and IPv6) must be shortlived.
  • Certbot can request IP certificates from 5.3 (webroot needs 5.4 or later) but cannot yet install them into nginx; point your server at /etc/letsencrypt/live/<ip>/ yourself.
# Let's Encrypt's example: request an IP certificate on staging first (certbot 5.4+)
sudo certbot certonly --staging \
  --preferred-profile shortlived \
  --webroot --webroot-path /var/www/html \
  --ip-address 192.0.2.10

Worked example: renewals per year

Say you look after 10 domains, a manual renewal takes 30 minutes (request, validate, install, reload), and you apply the same rule to every lifetime: renew at about two-thirds of the lifetime, which Let’s Encrypt calls acceptable.

  1. 398 days: renew every 398 × 2/3 ≈ 265 days → 365 ÷ 265 ≈ 1.4 renewals a year per domain
  2. 200 days (now): every ≈ 133 days → 365 ÷ 133 ≈ 2.7
  3. 100 days (2027): every ≈ 67 days → 365 ÷ 67 ≈ 5.4
  4. 47 days (2029): every ≈ 31 days → 365 ÷ 31 ≈ 11.8, roughly once a month

For 10 domains at 47 days: 11.8 × 10 = 118 renewals a year × 30 minutes = 59 hours a year. At 398 days it was 1.4 × 10 × 0.5 = 7 hours. The same chore grows about eightfold, and a single forgotten renewal puts a red warning page in front of your users.

The 6-day certificate makes the point even more clearly: 160 × 2/3 ≈ 107 hours, a renewal every four and a half days. Nobody does that by hand.

The lifetime is not the problem; manual renewal is. If the machine renews itself, 47 days and 398 days feel the same in practice.

Check that your server really renews

On Ubuntu, certbot from snap or apt installs a systemd timer (snap.certbot.renew.timer or certbot.timer, depending on how it was installed). Check three things:

# 1) The timer exists, and when it last ran
systemctl list-timers | grep -i certbot

# 2) A real renewal run against staging, without replacing anything
sudo certbot renew --dry-run

# 3) When the certificate your site is actually serving expires
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -enddate

Step 3 matters more than it looks. A renewed file on disk does not mean the site serves it: if nginx was not reloaded, the old certificate is still in memory. Have certbot reload on every successful renewal:

# Add a deploy hook to an existing certificate (once; stored in its renewal config)
sudo certbot reconfigure --cert-name example.com \
  --deploy-hook "systemctl reload nginx"

Then alert when a certificate has fewer than 14 days left. The approach from a server monitor that pings Telegram works: turn the step 3 output into days remaining and send a message past the threshold. A failed renewal is always silent, right up to the day it expires.

Prepare before 2029

  • Automate domain validation. With DNS-01, the machine must update TXT records through your DNS provider’s API. Let’s Encrypt says it is working on a new method, DNS-PERSIST-01, with the CA/B Forum and IETF: set a TXT record once and leave it. It expects this to be available in 2026.
  • Drop fixed 60-day cron jobs. Let’s Encrypt says plainly that a fixed 60-day interval will not be enough for 45-day certificates. Use a client that supports ACME Renewal Information (ARI), or renew at two-thirds of the lifetime.
  • Count the hand-installed certificates. Certificates copied onto a load balancer, a network appliance or an app that does not read from /etc/letsencrypt are the ones that expire quietly.

Once HTTPS renews itself, set HSTS and the other headers too; see security headers on nginx.

Common mistakes

  • Renewing without reloading. The new certificate sits on disk while the site serves the old one until it expires.
  • Testing against production repeatedly and hitting rate limits. Use --dry-run or --staging while experimenting.
  • Nobody receives the expiry email. The address registered at issuance belongs to someone who left. Run your own alert.
  • Using the nginx plugin for an IP certificate. As of October 2026 certbot cannot install IP certificates into nginx or Apache; use certonly and set the paths yourself.
  • Forgetting that staging changes first. Test systems on staging see shorter certificates about a month before production, which is a chance to catch problems early.

Sources

FAQ

Does a one-year certificate bought before March 2026 stop working?

No, it is valid until it expires. The new limits apply to certificates issued on or after each date. Your next renewal will get the shorter lifetime, so if you still renew by hand, automate before that renewal comes around.

I already use Let's Encrypt with certbot. Anything to do?

Mostly no. Certbot installs a renewal timer and renews when the certificate gets close to expiry. Run certbot renew --dry-run, confirm the timer exists, and make sure the web server reloads after renewal. The thing to watch is a hand-written cron that renews every 60 days on a fixed schedule; that will not be enough for 45-day certificates.

Who should use 6-day certificates?

Sites whose automated renewal is already reliable and that want to limit the damage of a leaked private key, since the certificate expires on its own within days. It is also the only kind Let's Encrypt issues for IP addresses. If your renewals have ever failed silently, wait.

Commands and settings were tested on sample systems. Try them on a test machine before production.