Let's Encrypt went down. Half the internet's TLS renewals went with it.

4 min read 1 source clear_take
├── "Let's Encrypt's dominance has created a dangerous single point of failure for the web's TLS infrastructure"
│  ├── top10.dev editorial (top10.dev) → read below

The editorial argues that Let's Encrypt now issues over 60% of publicly-trusted TLS certs, and the overwhelming majority of subscribers have hardcoded a single ACME directory URL into a single client on a single host. This concentration means a routine bad day at one nonprofit cascades into a non-trivial slice of the internet breaking, exposing the awkward pairing of 'free' with 'critical infrastructure.'

│  └── widdakay (Hacker News, 121 pts) → read

By surfacing the status page outage to 121+ points on HN, the submitter frames the event as significant enough to warrant broad community attention. The framing 'Let's Encrypt has been down most of today' treats a single CA's availability as a web-wide concern, implicitly acknowledging the concentration risk.

├── "Let's Encrypt remains one of the most successful security interventions in web history and deserves credit, not piling on"
│  └── top10.dev editorial (top10.dev) → read below

The editorial explicitly pauses to acknowledge that Let's Encrypt's 2015 pitch — free, automated, ubiquitous TLS — worked, driving HTTPS from a minority of pageviews to a near-universal default in roughly four years. It argues this success is worth saying out loud before critiquing the concentration it produced, and notes the outage involved no data loss, no key compromise, and no CA/Browser Forum drama.

└── "The real failure is operator complacency: subscribers never built multi-CA fallback into their automation"
  └── top10.dev editorial (top10.dev) → read below

The editorial points out that ACME automation built on 'fast retry-and-succeed' assumptions broke into multi-hour gaps the moment one CA degraded, and that subscribers 'never bothered to read their own runbook.' The argument is that the failure domain isn't really Let's Encrypt — it's the monoculture of one ACME client (Certbot or cert-manager) renewing against one hardcoded directory URL, which operators chose for convenience.

What happened

Let's Encrypt's public status page (letsencrypt.status.io) spent most of June 19, 2026 in some shade of yellow or red. The incident affected the production ACME v2 endpoint — `acme-v02.api.letsencrypt.org` — with intermittent 500s on `newOrder`, slow finalize steps, and degraded OCSP responder latency. Issuance wasn't fully offline for the entire window, but it was unreliable enough that automation built on the assumption of a fast retry-and-succeed loop started backing off into multi-hour gaps.

The Hacker News thread (121 points and climbing) filled up with the usual mix: ops engineers watching cert-manager log a queue of failed orders, hobbyists whose home-lab dashboards started throwing browser warnings, and a steady undertone of "why is this one nonprofit holding up this much of the web." That undertone is the actual story. Let's Encrypt now issues somewhere north of 60% of all publicly-trusted TLS certificates on the open web, and the overwhelming majority of those subscribers have hardcoded a single ACME directory URL into a single ACME client running on a single host.

No data loss. No key compromise. No CA/Browser Forum drama. Just a free service having a bad day, and a non-trivial slice of the internet discovering that "free" and "critical infrastructure" are an awkward pairing when you've never bothered to read your own runbook.

Why it matters

The original Let's Encrypt pitch in 2015 was simple: TLS should be free, automated, and ubiquitous. It worked. HTTPS adoption went from a minority of pageviews to a near-universal default in roughly four years. That's one of the most successful security interventions in the history of the web, and it's worth saying out loud before piling on.

But success has a shape, and the shape here is concentration. When one CA issues the majority of certs and one ACME client (Certbot or cert-manager, take your pick) handles the majority of renewals, the failure domain stops being "a CA" and starts being "the web's TLS layer." ISRG, the nonprofit behind Let's Encrypt, has been candid about this — their own engineering blog has multiple posts over the years explicitly asking other free CAs to exist, precisely so the ecosystem isn't fragile in this exact way.

The ecosystem mostly didn't listen. ZeroSSL exists and supports ACME. Buypass exists and supports ACME. Google Trust Services launched a free ACME tier in 2023 and is now a viable second source. The technical work to multi-source your TLS issuance has been done for years; what's missing is the operational habit of actually configuring it. Most cert-manager `ClusterIssuer` manifests in the wild have exactly one `server:` line, and that line points at Let's Encrypt.

The comment threads today also dragged out an old debate: short-lived certs vs. long-lived certs. Let's Encrypt's 90-day default (and the proposed 6-day short-lived profile) assumes a healthy, available issuer. When the issuer is down, short lifetimes are a liability, not a feature — your 90-day cert renewed at day 60 has 30 days of cushion; a 7-day cert renewed at day 5 has 48 hours before browsers start screaming. The industry-wide push toward shorter lifetimes (Apple's proposal at the CA/B Forum to cap leaf certs at 47 days by 2028 is the live one) makes today's outage a small preview of a future where issuer availability is a hard production dependency, not a background concern.

There's also a quieter point worth naming: OCSP. Let's Encrypt announced last year it will stop providing OCSP responses, moving fully to CRLs. Today's degraded OCSP responders are partly a non-event because most modern clients prefer OCSP stapling or skip revocation checking entirely under soft-fail. But if you're running anything that hard-fails on OCSP — some payment terminals, some federal-compliance stacks, some older Java keystores — today reminded you why "soft-fail" became the default.

What this means for your stack

Three things to do this week, in order of effort.

First, configure a second ACME issuer. In cert-manager, this is a second `ClusterIssuer` pointing at ZeroSSL, Buypass, or Google Trust Services, plus a `Certificate` annotation or external-dns trick that lets you fail over by changing one field. In Caddy, it's adding a second entry to the `acme_ca` directive. In Traefik, it's a second `certificatesResolvers` block. The configuration is genuinely a 10-line diff. The hard part is testing the failover before you need it — actually issue a cert from the backup, actually serve traffic with it, actually confirm your monitoring doesn't alert on the CA change.

Second, audit your renewal headroom. If your automation tries to renew at T-30 days and your cert has a 90-day lifetime, a one-day outage is invisible. If you've already migrated to short-lived certs, that headroom shrinks fast. Today is the day to grep your config for `renewBefore` and make sure it's set to something that survives a bad week, not just a bad hour. Cert-manager defaults to two-thirds of the cert lifetime, which is sane; check that nobody on your team "optimized" it down.

Third, decouple monitoring from the CA. A surprising number of TLS-monitoring setups today were blind because the monitoring itself depended on a fresh Let's Encrypt cert (think internal dashboards, status pages, even some PagerDuty integrations behind corporate proxies). If your alerting depends on the thing you're alerting about, you don't have alerting.

Looking ahead

The internet got HTTPS-everywhere by treating TLS as a solved, free, automated commodity. That framing is mostly right, but "commodity" has always implied "fungible" — multiple suppliers, easy switching, no lock-in. We built the automation half and skipped the fungibility half, and today is the bill. Expect the next round of ACME tooling improvements to lean hard into multi-CA defaults, and expect the smarter platform teams to spend Q3 quietly rewriting their issuer configs while nobody's watching. Free still beats paid, but two free CAs beat one.

Hacker News 149 pts 93 comments

Let's Encrypt has been down most of today

→ read on Hacker News

// share this

// get daily digest

Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.