certforge-discovery is an open-source agent that scans your infrastructure for TLS certificates and surfaces them in CertForge. It finds certificates you didn’t know you had — shadow certs from acquisitions, forgotten wildcards, certs issued by shadow IT — before they expire undetected.
GitHub: CertForge-LLC/certforge-discovery
What it scans
Installation
Download the binary for your platform from the latest release:Quick start — no account required
Run a scan locally without a CertForge account. Results print to stdout or write to a file:-dry-run with any scan to print the exact JSON payload that would be sent to CertForge — without posting anything:
Connect to CertForge
Runsetup to pick your data region and connect the agent to your CertForge account:
~/.certforge-discovery/config.yaml. Then run a scan:
source: ct_log, tls_scan, local, or k8s. They are automatically evaluated against your Domain Trust Profiles and flagged for policy mismatches.
Continuous agent mode
Run the agent continuously so CertForge always has a current picture of your cert inventory:poll_interval set in its config (default 6 hours).
Configuration
Setup writes~/.certforge-discovery/config.yaml:
Private CA awareness
If your environment usescertforge-connector with a private_ca: configured, point known_internal_cas at the same CA cert file. Discovery will then:
- Cryptographically verify (TLS scan, local filesystem, Kubernetes) or name-match (CT log) each discovered cert against the CA
- Tag matching certs as
issuer_type: internal_cain CertForge - Show them distinctly in the Discovery view so your team can govern internal issuance separately from public CA certs
Scan flags
Running as a service
systemd:secrets: [get, list] cluster-wide so the agent can read kubernetes.io/tls secrets across all namespaces.
What is sent to CertForge
The agent posts certificate metadata only — no private keys, no plaintext traffic, no filesystem contents beyond recognized cert formats.
For Kubernetes secrets: only the
tls.crt field is read — tls.key is never accessed or transmitted.
Corporate proxy
-target) makes direct TCP connections and is not proxied — run the agent on a host with direct access to the targets.
What happens after discovery
Discovered certs land in CertForge withgovernance_status = untracked. Your team can:
- Track — acknowledge the cert; CertForge monitors it for expiry and includes it in compliance reports
- Dismiss — mark as a known false positive; excluded from open issues
- Leave as untracked; it contributes to the Ungoverned KPI on the Dashboard