BuildNot yet confirmed elsewhere1 publisher3 min readPublished
Uptime and expiry checks cannot see a certificate that was never served on your server
A publicly trusted certificate issued for your domain and hosted elsewhere leaves one trace you can read for free: the Certificate Transparency entry the issuing CA had to create.
The Engineer · Build desk
What happened
- Since 2018 Chrome and Safari reject a publicly trusted certificate lacking valid SCTs, so an unlogged certificate does not work in a browser.
- Listed issuance routes include a dangling CNAME or stale DNS record satisfying domain validation, and vendors whose control over a subdomain was never revoked.
- crt.sh answers wildcard subdomain queries as JSON without an account; certspotter's issuance API returns one row per certificate on a free tier.
Why it matters
- constraint No amount of probe tuning fixes this class, because both probes read a socket you already control; adding checks against your own origin buys nothing here.
- capability You can enumerate the certificates that would work against your customers without a relationship with any CA, DNS provider, or the team that quietly delegated a subdomain.
- exposure Every party that once proved control of a name remains a live issuance path, which makes offboarding a TLS problem and not only an access problem.
- decision The choice is between a one-off look and keeping yesterday's output to diff against, and only the second one tells you about issuance you did not order.
Both halves of the standard TLS monitoring bundle share a vantage point. They open a connection to a host you already run and report on what that host hands back: a status code from the origin, and the `notAfter` field on the certificate your own server presents [1]. A certificate issued for a name under your domain and served from infrastructure you do not control never enters the field of view of either probe [1][2]. Neither is a tuning failure. The sensor is in the wrong place.
Certificate Transparency moves the sensor to the issuance side. Per the dev.to write-up, CT is specified in RFC 6962 as an append-only, cryptographically verifiable public record, and a CA submits each certificate it issues to independent logs, receiving a signed certificate timestamp in return [3][4]. The part that makes this dependable rather than aspirational is the browser enforcement: since 2018, Chrome, Safari and others refuse to trust a publicly trusted certificate that does not carry valid SCTs, so a certificate the CA declined to log is a certificate that fails in a browser [5]. For the case that actually costs you something, a phishing page with a working padlock, the attacker cannot opt out of the log without breaking their own tool. The set of certificates for your name that work against a victim is a subset of the set you can enumerate for free [15].
Read the issuance routes the post lists and count how many require a CA to be compromised. None do [14]. Domain validation proves control, not ownership, so answering an HTTP-01 challenge on your host or writing a TXT record in your zone is sufficient [6]. That covers a brief DNS compromise, a `CNAME` still pointing at a de-provisioned cloud resource, and a stale record left behind by a migration [7]. It also covers the contractor, the old CI pipeline and the marketing SaaS you connected a subdomain to years ago, any of which can still mint a certificate today unless that control was explicitly revoked [8]. Lookalike and adjacent names sit outside that model entirely, but they are keyed on the string in the log, so a query that watches the registrable name and its neighbours catches them [9].
The reading is cheap. `crt.sh` answers wildcard subdomain queries as JSON with no account, and certspotter's issuance API returns one row per certificate on an authenticated free tier [10][11]. The honest limit is stated in the source and worth restating: one query describes today, and says nothing about the certificate issued three weeks from now [13]. A single run is an audit. A monitor is a stored baseline plus a scheduled diff, and the difference is entirely in whether anyone keeps the previous output.
The triage that follows converts a detection problem into an inventory problem. Each row asks whether you recognise the issuer, the hostname set and the issuance date [12], which you can only answer if you know what your own teams legitimately ordered. That is where most of this work lands, and the source stops at detection: it tells you how to find the row, not what you are supposed to do about it once the certificate exists and browsers already trust it.
What to watch
- Any change to browser SCT enforcement policy: the guarantee that browser-trusted certificates are publicly enumerable rests entirely on it.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence58
- Adoption
- Insufficient
- Hype gap+12
- Incentives55
- Confidence52
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
A valid publicly-trusted certificate issued for a name under your domain but never served on your origin is invisible to conventional monitoring: the uptime check gets a 200 from the real server and the SSL-expiry monitor reads the real certificate's notAfter, so dashboards stay green.
- [2]
The unifying property of the abuse cases is that the certificate is served somewhere that is not your server, so the only signal that reaches the domain owner is the log entry.
- [3]
Certificate Transparency, specified in RFC 6962, is a public, append-only, cryptographically verifiable record of certificates.
- [4]
When a CA issues a certificate it submits it to a set of independent CT logs, each of which returns a signed certificate timestamp (SCT), a promise that the certificate has been publicly recorded.
- [5]
Since 2018, Chrome, Safari and others refuse to trust a publicly-trusted certificate unless it carries valid SCTs proving it was logged; a CA that issues without logging produces a certificate browsers reject.
- [6]
A domain-validation certificate proves control, not ownership: whoever can answer an HTTP-01 challenge on the host or write a DNS TXT record for the zone can obtain one.
- [7]
A brief DNS compromise, a dangling CNAME pointing at a de-provisioned cloud resource (subdomain takeover), or a stale record left after a migration is enough to pass domain validation.
- [8]
A contractor, an old CI pipeline or a marketing SaaS connected to a subdomain years ago can still mint a certificate today unless that control was revoked.
- [9]
Lookalike and adjacent names, such as yourbrand-support.com or yourbrand.io, also appear in CT keyed on the string, so a monitor watching the registrable name and its neighbours catches the pattern.
- [10]
crt.sh is a free front end to the logs requiring no account, and can return JSON for a URL-encoded wildcard query that catches subdomains.
- [11]
certspotter offers an issuance API with one row per certificate and an authenticated free tier.
- [12]
The source's triage method is to ask of each certificate whether you recognise the issuer, the set of hostnames and the issuance date; a cert from a CA you have never used or covering a subdomain you do not remember creating is the row that matters.
- [13]
Running the query once tells you the state of the world today and says nothing about a certificate issued three weeks from now.
- [14]
None of the issuance routes the source lists requires compromising a certificate authority.
- [15]
Because browsers require valid SCTs, every certificate for your domain that a browser will trust is contained in the set of certificates recorded in public CT logs, which anyone can query.
Sources
1 independent publisher whose own reporting we read for this story.
- dev.toSomeone Can Get an SSL Certificate for Your Domain. CT Logs Are How You Find Out.
1 article · August 24, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.