certspotter is a free, open source data security & privacy project written in Go and released under MPL-2.0. It has 1,175 GitHub stars, 104 forks and 18 open issues, and was last pushed 6 days ago. On this registry it ranks #22 of 24 tracked projects in Data Security & Privacy, with 5 head-to-head comparisons available.

What is certspotter?

Cert Spotter is a lightweight, open-source Certificate Transparency log monitor from SSLMate that watches Certificate Transparency logs and alerts you when an SSL/TLS certificate is issued for any domain on your watch list, aimed at site operators, security teams, and PKI administrators who need to catch unauthorized certificates without operating a database.

What it is

Cert Spotter is a Certificate Transparency (CT) log monitor written in Go and released under the Mozilla Public License 2.0. It lives in the security and privacy ecosystem — its topics are certificate-transparency, pki, security, webpki, and x509 — and it is maintained by SSLMate. The project is distributed as a command-line daemon rather than a service with a web front end: you install the certspotter command, give it a list of DNS names, and let it run continuously against the public CT logs. Both traditional RFC6962 logs and modern static-ct-api logs are monitored. Command-line and operational behaviour is documented through the certspotter(8), certspotter-script(8), certspotter-authorize(8), and certspotter-metrics(8) man pages.

The concrete problem it solves is unauthorized certificate issuance. Anyone who compromises your DNS, takes over an abandoned sub-domain, compromises a certificate authority, or simply buys a certificate outside your central procurement process can obtain a publicly trusted certificate bearing your name. Cert Spotter detects those cases: certificates issued to attackers redirecting visitors to a malicious site, certificates issued to attackers serving malware under your brand from a hijacked sub-domain, certificates issued by a compromised CA impersonating your site, and certificates issued in violation of corporate policy or outside your centralized certificate procurement process. It replaces the other open-source CT monitors that require you to stand up and maintain a database before they will run at all.

Key capabilities

  • Runs without a database, which removes the setup and maintenance burden that other open-source CT monitors impose.
  • Uses a dedicated certificate parser intended to ensure certificates are not missed.
  • Reads a watch list from $HOME/.certspotter/watchlist, one DNS name per line, where a leading dot (for example .example.com) monitors the whole domain tree and an unprefixed name monitors that single DNS name only.
  • Sends email alerts to addresses listed in $HOME/.certspotter/email_recipients using the system sendmail command, and executes any scripts placed in $HOME/.certspotter/hooks.d.
  • Suppresses false alarms through certspotter-authorize, run as certspotter-authorize /path/to/cert.pem, which records legitimate certificates and their precertificates so they do not trigger notifications.
  • Exposes metrics for Prometheus monitoring, as described in the certspotter-metrics(8) man page.
  • Accepts the -start_at_end command-line option, which begins monitoring new logs at the end rather than the beginning to save significant bandwidth.

Who uses it and how

  • Security teams tracking issuance across a corporate domain tree, using a dotted entry such as .example.com in the watch list so that every sub-domain is covered.
  • Operators who need early warning about abandoned sub-domains being taken over, since a newly logged certificate for a dormant name is the first visible sign of hijacking.
  • Organizations enforcing a centralized certificate procurement process, who treat any certificate outside that process as a policy violation worth investigating.
  • Administrators deploying it as a long-running daemon on a host with a working sendmail command, optionally wiring $HOME/.certspotter/hooks.d scripts into existing ticketing or alerting systems.
  • Teams that prefer a single Go binary over a database-backed stack, since the whole monitor runs from one installed command.

Getting started

Install the command with Go 1.21 or higher using go install software.sslmate.com/src/certspotter/cmd/certspotter@latest, then create $HOME/.certspotter/watchlist and either $HOME/.certspotter/email_recipients or scripts in $HOME/.certspotter/hooks.d, and configure the system to run certspotter as a daemon. SSLMate also offers a hosted version at https://sslmate.com/certspotter that adds monitoring for expiring and incorrectly installed certificates, Slack notifications, and a web dashboard for tracking all of your certificates.

How it compares

The facts provided do not name any comparable tools in this registry, so Cert Spotter stands alone here. The only related offering mentioned is SSLMate's own hosted service, which extends the open-source monitor with expiring and incorrectly-installed certificate monitoring, Slack notifications, and a web dashboard.

When to use it — and when not to

A self-hoster must run and supervise a daemon and must have a working sendmail command on the host if email alerts are wanted; there is no database to operate, which is the main operational advantage. Teams that need a web dashboard, Slack notifications, or monitoring of expiring and incorrectly-installed certificates will not get those from the open-source edition and should look at the hosted service instead. Note also that -start_at_end trades bandwidth for coverage, since certificates logged before you started running the tool will not be reported, and the README's security section is cut off in the supplied material.

project readme (upstream, from github) — read inline

Cert Spotter - Certificate Transparency Monitor - Open Source Edition

Cert Spotter is a Certificate Transparency log monitor from SSLMate that alerts you when an SSL/TLS certificate is issued for one of your domains. Cert Spotter is easier to use than other open source CT monitors, since it does not require a database. It's also more robust, since it uses a special certificate parser that ensures it won't miss certificates.

Cert Spotter is available as a hosted service by SSLMate that also provides monitoring for expiring and incorrectly-installed certificates, Slack notifications, and a Web dashboard for tracking all of your certificates. Visit to sign up.

You can use Cert Spotter to detect:

  • Certificates issued to attackers who have compromised your DNS and are redirecting your visitors to their malicious site.
  • Certificates issued to attackers who have taken over an abandoned sub-domain in order to serve malware under your name.
  • Certificates issued to attackers who have compromised a certificate authority and want to impersonate your site.
  • Certificates issued in violation of your corporate policy or outside of your centralized certificate procurement process.

Quickstart

The following instructions require you to have Go version 1.21 or higher installed.

  1. Install the certspotter command using the go command:

    go install software.sslmate.com/src/certspotter/cmd/certspotter@latest
    
  2. Create a watch list file $HOME/.certspotter/watchlist containing the DNS names you want to monitor, one per line. To monitor an entire domain tree (including the domain itself and all sub-domains) prefix the domain name with a dot (e.g. .example.com). To monitor a single DNS name only, do not prefix the name with a dot.

  3. Place one or more email addresses in the $HOME/.certspotter/email_recipients file (one per line), and/or place one or more executable scripts in the $HOME/.certspotter/hooks.d directory. certspotter will email the listed addresses (requires your system to have a working sendmail command) and execute the provided scripts when it detects a certificate for a domain on your watch list.

  4. Configure your system to run certspotter as a daemon. You may want to specify the -start_at_end command line option to tell certspotter to start monitoring new logs at the end instead of the beginning. This saves significant bandwidth, but you won't be notified about certificates which were logged before you started using certspotter.

Documentation

Authorizing Known Certificates to Prevent False Alarms

You can use the certspotter-authorize command to tell certspotter about legitimate certificates issued by your certificate authority. certspotter won't notify you when it discovers an authorized certificate (or its corresponding precertificate) in Certificate Transparency logs.

To install certspotter-authorize, run:

go install software.sslmate.com/src/certspotter/cmd/certspotter-authorize@latest

To authorize a certificate, run:

certspotter-authorize /path/to/cert.pem

For more details, see the certspotter-authorize(8) man page.

What certificates are detected by Cert Spotter?

In the default configuration, any certificate that is logged to a Certificate Transparency log listed as Qualified, Usable, or ReadOnly in the Google Chrome or Apple log lists will be detected by Cert Spotter. By default, Chrome, Safari, Firefox, and Edge only accept certificates that are logged to at least one such log (Firefox and Edge use the Chrome log list), so any certificate that works in these browsers will be detected by Cert Spotter.

Cert Spotter monitors both traditional RFC6962 logs and modern static-ct-api logs.

Security

Cert Spotter assumes an adversarial model in which an attacker produces a certificate that is accepted by at least some clients but goes undetected because of an encoding error that prevents CT monitors from understanding it. To defend against this attack, Cert Spotter uses a special certificate parser that keeps the certificate unparsed except for the identifiers. If one of the identifiers matches a domain on your watchlist, you will be notified, even if other parts of the certificate are unparsable.

Cert Spotter takes special precautions to ensure identifiers are parsed correctly, and implements defenses against identifier-based attacks. For instance, if a DNS identifier contains a null byte, Cert Spotter interprets it as two identifiers: the complete identifier, and the identifier formed by truncating at the first null byte. For example, a certificate for example.org\0.example.com will alert the owners of both example.org and example.com. This defends against null prefix attacks.

SSLMate continuously monitors CT logs to make sure every certificate's identifiers can be successfully parsed, and will release updates to Cert Spotter as necessary to fix parsing failures.

Cert Spotter understands wildcard DNS names, and will alert you if a wildcard certificate might match an identifier on your watchlist. For example, a watchlist entry for sub.example.com would match certificates for *.example.com.

Cert Spotter is not just a log monitor, but also a log auditor which checks that the log is obeying its append-only property. A future release of Cert Spotter will support gossiping with other log monitors to ensure the log is presenting a single view.

Testing

Every day at around 12:05 UTC, a certificate is issued and logged to CT for the DNS name DAY-OF-WEEK.test.certspotter.org. You can add one or more of these DNS names (or .test.certspotter.org) to your watch list to get confirmation that Cert Spotter is working.

DNS Name Issuer Key Type
monday.test.certspotter.org Sectigo RSA
tuesday.test.certspotter.org Let's Encrypt ECDSA
wednesday.test.certspotter.org Google RSA
thursday.test.certspotter.org Sectigo ECDSA
friday.test.certspotter.org Let's Encrypt RSA
saturday.test.certspotter.org Google ECDSA
sunday.test.certspotter.org Let's Encrypt ECDSA

Monitoring certspotter with Prometheus (Experimental)

You can use the experimental certspotter-metrics command to output Prometheus metrics about certspotter's progress monitoring each CT log, such as how many entries have been downloaded and verified. certspotter-metrics reads the certspotter state directory and writes metrics to stdout; run it periodically and expose the output to Prometheus, e.g. with the node_exporter textfile collector.

To install certspotter-metrics, run:

go install software.sslmate.com/src/certspotter/cmd/certspotter-metrics@latest

Here's a crontab entry that exposes metrics to the node_exporter textfile collector every five minutes:

*/5 * * * * root certspotter-metrics > /var/lib/node_exporter/certspotter.prom.tmp && mv /var/lib/node_exporter/certspotter.prom.tmp /var/lib/node_exporter/certspotter.prom

Here's a Prometheus query to determine download backlog (number entries in the log that haven't been downloaded yet):

certspotter_log_max_sth_size-certspotter_log_download_position

certspotter-metrics is experimental. Metrics may change in future versions, and a future version of certspotter might export metrics directly from a builtin HTTP server rather than using a separate command. Please provide feedback at .

For more details, see the certspotter-metrics(8) man page.

Copyright

Copyright © 2016-2026 Opsmate, Inc.

Licensed under the Mozilla Public License Version 2.0.

Frequently asked questions

Is certspotter free to use?

certspotter is open source under the MPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does certspotter do?

Lightweight Certificate Transparency Log Monitor

What is certspotter written in?

certspotter is primarily written in Go. Its source is publicly available at https://github.com/SSLMate/certspotter, and it has 1,175 GitHub stars.