Cert Lifetime — TLS Cert Lifetime Lint

Finds the 12 settings that break when public TLS certificates fall to 100 days on 2027-03-15: openssl -days, Terraform, cert-manager, late expiry alerts, HPKP, TLS 1.0/1.1, SHA-1, RSA-1024.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hub
ext install ReadyStack.tls-cert-lifetime-lint
npx @readystack/tls-cert-lifetime-lint <file>
npx @readystack/tls-cert-lifetime-lint --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 12 rules TLS Cert Lifetime Lint - SC-081v3 renewal check checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Finds the 12 settings that break when public TLS certificates fall to 100 days on 2027-03-15: openssl -days, Terraform, cert-manager, late expiry alerts, HPKP, TLS 1.0/1.1, SHA-1, RSA-1024.

One payment, one licence key for this tool. The key is shown right after payment.

A certificate lifecycle management platform starts at $50,000-$100,000 a year plus $1-$5 per certificate (Keyfactor Command, 2026 vendor pricing).

Buy the full version — $29

Need more than this one? ReadyStack Pass opens all 462 files and 471 full versions — $29/month or $199/year. See the Pass →

ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

TLS Cert Lifetime Lint - SC-081v3 renewal check

Six lines in this pipeline break TLS renewal, and they belong to the platform engineers running Terraform and cert-manager in production today.

This is what the extension prints for it, before a word of explanation:

pipeline.txt
  2: An RSA key under 2048 bits is being generated.
  3: openssl -days is over 200.
  6: Terraform validity_period_hours is over 4800 hours (200 days), the public TLS maximum in force since 2026-03-15.
  9: cert-manager duration is over 4800h (200 days).
  12: This expiry alert only fires with 21 days or less left.
  15: HTTP Public Key Pinning is being sent.
-- 6 --

Those six line numbers point at an ordinary renewal setup:

 1  # renew.sh
 2  openssl req -new -newkey rsa:1024 -nodes -keyout edge.key -out edge.csr
 3  openssl x509 -req -days 365 -in edge.csr -signkey edge.key -out edge.crt
 5  # edge.tf
 6    validity_period_hours = 8760
 8  # certificate.yaml
 9    duration: 8760h
11  # alerts.yaml
12    expr: cert_expiry_days < 14
14  # nginx.conf
15  add_header Public-Key-Pins 'pin-sha256="..."; max-age=5184000';

Nothing there looks wrong. It was all correct in 2024.

What changed, and on which dates

CA/Browser Forum ballot SC-081v3 passed in April 2025 and put the maximum lifetime of a publicly trusted TLS certificate on a fixed schedule. 200 days from 2026-03-15. 100 days from 2027-03-15. 47 days from 2029-03-15. Domain control validation reuse shrinks alongside it, down to 10 days by 2029.

The first step is behind us. The second, 2027-03-15, turns a six-monthly habit into an outage, because 100 days no longer fits inside any renewal cadence a human remembers to perform.

Reading the six lines

Lines 3, 6 and 9 all ask for a year, and a public CA will not issue a year. You get a refusal, or you get a shorter certificate than the manifest claims you have, which is worse: renewBefore is then computed against a lifetime that does not exist. Line 2 fails earlier still, at issuance rather than at deployment, because NIST SP 800-131A disallows RSA under 2048 bits.

Line 12 is the quiet one. Fourteen days of warning is generous against a 398-day certificate. Against a 100-day certificate, one third of the lifetime is 33 days, so that alert fires after the renewal window has already closed. Line 15 bites only at renewal: a pin set outlives a certificate re-keyed every 47 to 100 days, so the header locks visitors out of the site it was meant to protect.

What the extension does

TLS Cert Lifetime Lint carries the SC-081v3 schedule as 12 fixed rules rather than as recall. Alongside the six above it catches SHA-1 signing, which public CAs stopped doing in 2016, TLS 1.0 and 1.1, and the runbook line that still states the retired 398-day maximum. It reads openssl commands, Terraform, cert-manager YAML, nginx and Apache directives, Go tls.Config and Prometheus alert rules, and reports the line, the dated cap it breaks, and the value to use instead. What is already broken is separated from what breaks at the next milestone, so a backlog can be ordered rather than panicked over.

Checking a file you have open is free, and complete: every finding, every line number, nothing blurred and no trial counter. A licence adds the next job - the whole repository at once, the findings exported as CSV, JSON or HTML, and CI JSON so a pull request fails before an over-length certificate reaches production. An online SSL scanner tests a certificate that is already serving traffic, so it finds this after deployment; this reads the configuration before anything is issued.

15 seconds — what it actually does

Questions people ask

What does TLS Cert Lifetime Lint actually do?

It reads certificate configuration as text and flags settings that the CA/Browser Forum SC-081v3 schedule has already broken or will break on a named date. It checks openssl -days values, Terraform validity_period_hours, cert-manager duration, expiry alert thresholds, HPKP headers, TLS 1.0/1.1, SHA-1 signing and RSA keys under 2048 bits, and reports the line number, the cap that applies and the value to use instead.

Who is this for?

Platform, SRE and DevOps engineers who issue publicly trusted TLS certificates from infrastructure as code - Terraform, cert-manager, Ansible, shell scripts around openssl - and who own the renewal that pages someone at 3am. It is aimed at teams that still have annual or six-monthly renewal habits written into repositories and runbooks.

Why not just ask a chatbot or run an SSL scanner?

An online SSL scanner tests a certificate that is already serving traffic, so it finds the problem after deployment. A chatbot answers from training data and still repeats the retired 398-day maximum. This reads the configuration in the repository before anything is issued, and carries the dated schedule - 200 days from 2026-03-15, 100 from 2027-03-15, 47 from 2029-03-15 - as fixed rules rather than recall.

What is free and what needs a licence?

Free covers one file completely: open a config, run the check, and you see every one of the 12 findings with its line number, severity and replacement value. Nothing is blurred or limited by a trial counter. A licence adds the next job - scanning the whole repository, exporting the findings as CSV, JSON or HTML, and writing CI JSON so a pipeline fails before a bad certificate ships.

How does the price compare to the alternative?

A certificate lifecycle management platform is the usual answer to this problem and it starts around $50,000 to $100,000 a year plus $1 to $5 per certificate at 2026 vendor pricing. This is $29 once,. It does not manage certificates - it stops the configuration mistakes that make a renewal fail in the first place.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. TLS Cert Lifetime Lint checks the file you open against 12 rules from a rule set dated 2026-09-20, and points at the exact line with the fix. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →