Skip to content

47-Day Certificates Are Coming. Are You Ready?

Act Now →

Pre-Issuance Certificate Linting With pkilint and zlint

Certificate Lifecycle Management

A certificate is a small, rigid data structure governed by a large body of rules: RFC 5280, the CA/Browser Forum Baseline Requirements, profile-specific guidelines, and the policies of every root program that trusts it. Get any field wrong, a missing extension, a malformed name, an out-of-policy value, and the certificate is not merely imperfect; under industry rules, it is mis-issued, and mis-issued certificates must be revoked on a short, unforgiving clock. Certificate linting is the practice of automatically checking a certificate against those rules, and pre-issuance linting checks it before it is ever signed. The difference between the two is the difference between blocking a defect and apologizing for one.

This article explains why pre-issuance linting has moved from good hygiene to operational necessity in 2026, how the open-source linters pkilint and zlint work, what a single malformed profile can cost when it triggers a mass revocation, and how to embed linting in an issuance pipeline so a profile defect is caught before it becomes a revocation event with lawyers attached. The thesis is simple: at modern issuance volumes, prevention is the only economical control, and pre-issuance linting is where prevention happens.

Why This Matters Now?

Three forces are converging to make pre-issuance linting urgent. Certificate lifetimes are shrinking, so issuance volume is climbing; a mis-issued certificate now carries a revocation clock measured in hours; and the most expensive recent failures in the industry trace back to profile defects that a linter would have caught. Together, they turn linting from good hygiene into an operational control.

Shorter lifetimes mean far higher issuance volume

The CA/Browser Forum’s phased reduction of TLS certificate lifetimes, beginning with the 200-day maximum in March 2026 and reaching 47 days in 2029, multiplies issuance volume. The same inventory that generated roughly 1,000 renewals a year will, under the 47-day regime, generate over 8,000 renewal events per year. Each of those issuances passes through the same profile logic, so a single configuration error is not an isolated slip, but a defect stamped onto every certificate that profile produces.

Every one of those issuances is an opportunity for a profile defect to slip through, and at that volume, a defect in a shared profile propagates fast. Higher throughput raises both the likelihood and the blast radius of a malformed certificate. It also compresses the time available to notice a systemic defect before it has propagated across an entire profile.

Misissuance carries a 24-hour revocation clock

The consequence of a bad certificate is defined by the Baseline Requirements. Section 4.9.1.1 sets the revocation timelines: some situations require revocation within 24 hours, while others allow up to 5 days; these deadlines apply whether the event involves a single certificate or a mass revocation.

A linting failure is squarely in scope: if an issue that could or should have been caught by linting gets issued, that is more akin to a design defect than an externally reported problem, and as such, it certainly triggers the 24-hour clock. There is very little time to react, which is why prevention beats detection. A gate that blocks a bad certificate before signing removes the clock entirely, because nothing untrusted is ever issued.

The cautionary tales are recent and expensive

Two events make the stakes concrete. In July 2024, DigiCert announced the forced revocation of 83,267 certificates issued to 6,807 customers, giving them 24 hours to replace them after discovering that some CNAME-based domain validations had omitted an underscore prefix. The fallout was severe enough that one affected customer, the healthcare-benefits technology firm Alegeus, sued DigiCert and won a temporary restraining order that paused the revocation. Separately, Entrust’s mis-issuance of more than 26,000 EV TLS certificates, combined with slow remediation, contributed to Google Chrome’s decision to stop trusting Entrust TLS certificates after October 31, 2024. Profile and validation defects are not theoretical; they have triggered mass revocations, litigation, and the loss of a CA’s trusted status.

How Linting Works?

Before looking at where linting belongs in a pipeline, it helps to understand what a linter does, how the practice became an industry norm, and which tools dominate. The sections below cover what linting checks are, how it grew out of Certificate Transparency, the two open-source linters most teams rely on, and the crucial difference between checking a certificate before and after it is signed.

What linting checks

Linting is the process of performing static analysis on source code to flag patterns that might cause errors. Applied to certificates, it analyzes each one against the TLS Baseline Requirements, EV Guidelines, and RFC 5280, as applicable.

A linter parses a certificate and evaluates hundreds of rules: required and forbidden extensions, name encoding, key usage and extended key usage consistency, validity period limits, serial number entropy, and the many structural constraints that the standards impose, encoding thousands of individual checks drawn from RFC 5280, the Baseline Requirements, and root program profiles. It returns errors, warnings, and notices, allowing the issuer to fix or reject a non-compliant certificate. Because the rules are numerous and frequently updated, a human reviewer cannot reliably apply them at issuance speed, which is exactly why the check must be automated.

How linting became standard practice

Linting grew out of Certificate Transparency. Once CAs were required to log certificates to public CT logs, tools such as crt.sh could analyze every logged certificate, and the early 2016 linting results exposed widespread errors and warnings across nearly every CA’s certificates in what was effectively a name-and-shame exercise. Crucially, linting can be deployed by the CA directly against its own to-be-signed certificate or CT pre-certificate, allowing the CA either to prevent a non-compliant certificate from being issued or to detect it shortly after. That first option, prevention before signing, is pre-issuance linting. It moves the check left, from a public audit of what was already issued to a private gate on what is about to be.

pkilint and zlint

Two open-source linters dominate. zlint, maintained in the zmap project, and pkilint, maintained by DigiCert, are the two most widely used, alongside older tools such as certlint and the manual lintcert utility. zlint lives at github.com/zmap/zlint and pkilint at github.com/digicert/pkilint.

They differ in implementation and rule coverage, which is why mature issuance pipelines often run more than one: zlint is a widely adopted Go-based linter with broad Baseline Requirements and RFC 5280 coverage, while pkilint is a Python-based framework with deep, profile-aware checking across certificate types, including S/MIME and other profiles. Running both increases the chance that a defect is caught before signing. In practice, pkilint’s profile awareness is valuable for non-web certificate types, while zlint’s maturity and speed suit high-throughput web issuance.

Pre-issuance versus post-issuance linting

The distinction is operationally important. Pre-issuance linting runs against the to-be-signed certificate, so a failure simply blocks issuance and nothing bad reaches the world. Post-issuance linting runs after the fact, as a spot check, a compensating control, or when testing new linter rules.

The distinction matters for the revocation clock: a pre-issuance linting failure that lets a catchable issue through is a design defect that triggers the 24-hour clock, whereas post-issuance findings are more like an externally reported problem because the linter policy is not yet fine-tuned and they need investigation. The lesson is that pre-issuance linting is the control that prevents harm; post-issuance linting is a safety net, not a substitute. Treating the safety net as the primary control is how catchable defects reach production in the first place.

Certificate Management

Prevent certificate outages, streamline IT operations, and achieve agility with our certificate management solution.

Risks and Pitfalls

Both the absence of linting and the misuse of it create risk. The table below sets out the failure modes that most often turn a profile defect into a business incident, with the cause and likely consequence of each.

RiskCauseConsequence
Mass revocationA malformed shared profile issued at volume.Thousands of certificates revoked on a 24-hour clock.
Litigation and outageCustomers cannot replace certificates in time.Restraining orders, outages, and reputational damage.
Loss of CA trustRepeated misissuance and slow remediation.Root programs distrust the CA, invalidating all its certs.
False confidenceRelying on post-issuance linting alone.Defects reach production before they are detected.
Linter blind spotsA single linter misses a rule another would catch.Catchable defects slip through to issuance.
Profile driftNew profiles or rule changes untested.Previously valid issuance became non-compliant.

The defect hides in the profile, not the certificate

A crucial point is that mass-revocation events usually stem from a flaw in a profile or issuance configuration that applies across many certificates, rather than a one-off mistake. The DigiCert event illustrates this precisely: the omission of the underscore prefix was a property of a validation path and affected roughly 0.4 percent of applicable domain validations across tens of thousands of certificates.

A single profile defect scales to the entire population that the profile touches. Pre-issuance linting catches the defect in the first certificate, before the profile has issued thousands more certificates. That is the decisive economic argument for the control: the cost of catching a defect scale with a single certificate, while the cost of missing it scales with the entire profile population.

Even disciplined CAs struggle with the logistics

When a mass revocation occurs, executing it within the deadline is difficult. In the DigiCert incident, the CA had difficulty determining which certificates were impacted and which had already been replaced. A significant complication was that many of its customers did not use automated certificate lifecycle management extensively, making rapid replacement painful. Prevention at the point of issuance avoids this entire scramble. A defect that is never signed produces no revocation, no customer notification, and no race against a 24-hour deadline.

Implementation Best Practices

Embedding linting effectively is about placing the right check at the right point in the pipeline. The practices below move from the single most important control, linting before signing, outward to the inventory and rehearsal that contain anything the gate misses.

  1. Lint before signing, every time: Run pre-issuance linting against the to-be-signed certificate or CT pre-certificate and configure issuance to fail closed: if linting reports an error, the certificate is not signed. This is the control that prevents harm rather than detecting it. CertSecure Manager enforces this gate on every issuance by default, so fail-closed behavior is built in rather than something each pipeline has to wire up by hand.
  2. Run more than one linter: Use both zlint and pkilint, since their rule coverage differs and one frequently catches what the other misses. Treat the union of their errors as a blocking condition. The marginal cost of running a second linter is negligible against the cost of a single missed defect. It runs both linters inside the issuance gate, so the union of their errors blocks signing without extra integration work.
  3. Lint the profile, not just the certificate: Because mass-revocation defects originate in profiles and issuance configuration, lint representative certificates from every profile whenever a profile is created or changed, before it issues at volume.
  4. Keep linters and rule sets current: The Baseline Requirements, root program policies, and profile guidelines change; update linter versions and rule configurations so that today’s compliant issuance stays compliant tomorrow.
  5. Use post-issuance linting as a safety net, not a substitute: Continue spot-checking issued and CT-logged certificates to catch anything the pre-issuance gate missed and to validate new rules but never rely on it as the primary control.
  6. Pair linting with automation and inventory: Because shorter lifetimes raise volume, ensure dependent systems can re-issue quickly if a revocation is ever required, and maintain an inventory that maps every certificate to its owner and profile so scope can be determined in minutes, not days. A current inventory is what converts a revocation order into a worklist rather than an investigation. This is exactly what it provides: automated renewal across your CAs together with a centralized inventory that maps every certificate to its owner and profile.
  7. Rehearse a revocation response: Even with strong pre-issuance linting, plan and test how you would identify scope, notify owners, and re-issue within a 24-hour window, so a residual incident is contained rather than chaotic.

Certificate Management

Prevent certificate outages, streamline IT operations, and achieve agility with our certificate management solution.

What It Means for Security Teams?

Pre-issuance linting is not solely a PKI concern; it affects every team that issues, consumes, or responds to certificates. Responsibilities differ by role, but the shrinking-lifetime timeline raises the stakes for all of them.

  • PKI teams own the issuance pipeline and the profiles where defects originate and are the primary owners of pre-issuance linting. CertSecure Manager gives them a single place to enforce the linting gate and manage profiles across every CA, public and private.
  • Anyone running a private CA inherits the same risk on internal scale, and benefits from linting even though private certificates are outside public root program rules, since a malformed internal certificate can still break mTLS or bring down a service.
  • DevSecOps teams integrating automated issuance into pipelines should treat linting as a build-time gate, the same way they treat security scanning of code, failing the build when a certificate would not pass. Its ACME and REST API integrations let them wire that gate directly into existing CI/CD pipelines.
  • CISOs carry the consequence of a mass-revocation event, including outage, litigation exposure, and the catastrophic case of losing CA trust entirely.
  • Compliance and audit teams rely on linting as documented evidence that issuance meets the Baseline Requirements and relevant profiles, and as a repeatable, automated check rather than a manual review. It records this evidence centrally, turning audit preparation into a report rather than a scramble.

How Encryption Consulting Can Help?

Catching a malformed profile before it is signed, and surviving the rare miss, takes more than open-source linters bolted onto a script. It takes a platform that enforces the linting gate at every issuance, keeps a live inventory of what has been issued, and can re-issue at volume the moment a revocation is required.

That is what our CertSecure Manager is built to do. Our certificate lifecycle management platform runs pre-issuance linting as a consistent, fail-closed gate across every profile, so a malformed certificate is blocked before it is ever signed rather than discovered in a CT log afterward. Because rule coverage differs between linters, it runs both zlint and pkilint in that gate and treats the union of their findings as blocking, and it lints representative certificates whenever a profile is created or changed, catching a defect in the profile before it reaches volume. It maintains a centralized inventory that maps every certificate to its owner, profile, and dependent systems, so a revocation order can be scoped within minutes rather than days.

Beyond the gate, it keeps linter rule sets current as the Baseline Requirements and root-program policies evolve, spot-checks CT-logged certificates as a post-issuance safety net, and records every check as audit-ready evidence. And it automates renewal and re-issuance across your public and private CAs, so the shorter lifetimes that drive all this volume never result in outages. Through ACME and REST integrations, the same controls apply whether a certificate is issued from a CI/CD pipeline or a traditional PKI.

The principle behind the platform is the one this article argues for: compliant issuance at scale is an engineered discipline, not a manual review. Lint before signing, automate renewal, and know your inventory, so that a single bad profile is caught on the first certificate rather than discovered across thousands of certificates. To see where your issuance pipeline stands today, talk to Encryption Consulting about a certificate discovery and issuance-governance assessment.

Conclusion

A certificate is unforgiving by design, and the rules that govern it come with a revocation clock measured in hours. As lifetimes shrink and issuance volume climbs through 2026 and beyond, the probability that a malformed profile slips into production rises, and with it the risk of a mass-revocation event of the kind that has already produced 83,000-certificate revocations, customer lawsuits, and the distrust of an entire CA. Pre-issuance linting with pkilint and zlint is the control that prevents a profile defect from ever being signed. It is cheap, it is automatable, and it is a failsafe, blocking a non-compliant certificate instead of producing one that must later be revoked.

Lint before signing; run more than one linter; lint every profile before it issues at volume; and keep post-issuance linting only as a safety net. Pair that gate with automated lifecycle management and a cryptographic inventory so that any residual incident is contained within the deadline rather than escalating into an outage. The goal is a pipeline in which a malformed profile cannot be signed, and the rare exception is a contained worklist rather than a public incident. The cost of a linter in the pipeline is trivial; the cost of the mass revocation it prevents is not.