Find every certificate you forgot you issued
How Tidelock's Certificate Discovery tool uses public Certificate Transparency logs to enumerate every subdomain of a domain, then audits the TLS cert on each one.
How Tidelock's Certificate Discovery tool uses public Certificate Transparency logs to enumerate every subdomain of a domain, then audits the TLS cert on each one.
You almost certainly own more certificates than you think. A staging box from
two years ago. A vendor subdomain someone provisioned for a webhook integration.
A legacy. host nobody monitors. Each one is a quiet expiry waiting to take
down something at 3am.
The new Certificate Discovery tool gives you a full picture in one paste: type a root domain, get back every subdomain a public CA has ever issued a cert for, plus a live audit of the cert each one is currently serving.
Since 2018, every certificate trusted by Chrome, Safari, and Firefox has to be
published to at least two append-only public logs — that's
Certificate Transparency. The original
goal was detection: if a CA mis-issues a cert for your-bank.com, you want a
public record so you can catch it. The side effect is that CT logs are now the
single best subdomain inventory on the internet, far better than DNS scraping
or brute-forcing wordlists.
If you've ever wanted to know "what's actually exposed under our domain?", the CAs have already told you. You just have to ask.
The discovery half is a single call to the CertSpotter API — we ask for every issuance whose SAN list mentions the root domain or anything under it, and expand the DNS names so we get the full SAN inventory back rather than just issuance metadata.
From there it's housekeeping:
*.example.com) — those aren't a host you can connect
to.That's it for the discovery half. The interesting part is what happens next.
A list of hostnames is only useful if you also know whether the cert each one is currently serving is healthy. So the frontend takes the discovered list and fires a per-host inspection request back to the server. Each one opens a real TLS connection on port 443 and captures the leaf certificate the host hands back.
Three details about that handshake matter:
Once we have the certificate bytes, we parse them and pull out: issuer
(common name + organisation), subject CN, validFrom / validTo timestamps,
all SAN entries, and days remaining until expiry.
Once we have the parsed cert, the verdict is a small ladder. The first one that matches wins:
| Status | Meaning |
|---|---|
| Expired | now > validTo |
| Not yet valid | now < validFrom (rare, but a real failure mode for misconfigured renewals) |
| Hostname mismatch | Neither the CN nor any SAN matches the host we connected to |
| Expires very soon | ≤ 7 days left |
| Renewal due | ≤ 30 days left |
| Healthy | Everything above passed |
Hostname matching respects wildcards correctly — *.example.com matches
api.example.com but not deep.api.example.com, per RFC 6125. A wildcard
only covers a single label. That's a subtle one: plenty of in-house cert
checkers get it wrong and either over-match (treating *.example.com as
matching anything ending in .example.com, which would let one cert
masquerade as a different security boundary) or refuse to match wildcards at
all and produce false mismatches on every CDN-fronted subdomain.
A few honest limits:
:8443, this tool won't
see it. CT logs don't carry port information, and we'd rather report nothing
than guess.A scan is a moment in time. The cert that's healthy today is the one expiring six weeks from now while everyone's on holiday. Discovery tells you what exists; monitoring tells you what's about to break. The free tool answers the first question. Tidelock answers the second — but you don't need an account to use the discovery tool, and you probably should, at least once, just to see what comes back.