QCecuring - Enterprise Security Solutions

Certificate Transparency: How CT Logs Protect Your Domains

Pki 10 Jan, 2026 · 05 Mins read

Certificate Transparency creates a public audit trail of every TLS certificate issued. Here's how CT logs work, how to monitor them for unauthorized certificates, and why they replaced certificate pinning.


In 2011, a Dutch Certificate Authority called DigiNotar was compromised. The attackers issued fraudulent certificates for google.com, yahoo.com, and dozens of other domains — used to intercept Gmail traffic of Iranian dissidents. The certificates were technically valid (signed by a trusted CA) and undetectable by normal validation.

Certificate Transparency (CT) was created to ensure this can never happen undetected again. Every publicly-trusted TLS certificate must now be logged in public, append-only, cryptographically-verifiable logs before browsers accept it. If a rogue CA issues a certificate for your domain, it appears in CT logs — and you can detect it.


How Certificate Transparency Works

The System

CT consists of three components:

1. CT Logs — append-only, publicly-auditable databases of certificates. Operated by Google, Cloudflare, DigiCert, Sectigo, and others. Anyone can query them.

2. Signed Certificate Timestamps (SCTs) — proof that a certificate was submitted to a log. The log returns an SCT (a signed promise to include the certificate within 24 hours). Browsers require SCTs.

3. Monitors — services that watch CT logs for certificates matching specific domains. Alert domain owners when unexpected certificates appear.

The Flow

1. CA issues certificate for example.com
2. CA submits certificate to 2+ CT logs (before or during issuance)
3. Each CT log returns an SCT (signed timestamp proving submission)
4. CA embeds SCTs in the certificate (X.509 extension)
5. Server presents certificate + SCTs to browser during TLS handshake
6. Browser verifies: certificate valid AND SCTs present from required number of logs
7. If SCTs missing or invalid → browser rejects the certificate

Meanwhile:
8. Domain owner monitors CT logs for certificates matching their domains
9. If unexpected certificate appears → investigate (possible compromise or mis-issuance)

Browser Requirements

Chrome requires SCTs from multiple independent CT logs:

Certificate LifetimeRequired SCTs
< 180 days2 SCTs from different logs
180 days - 15 months3 SCTs
15 months - 27 months4 SCTs
> 27 months5 SCTs

If a certificate doesn’t have enough valid SCTs, Chrome shows a certificate error — even if the certificate is otherwise valid.


Monitoring CT Logs for Your Domains

Why Monitor

CT logs are public. Anyone can search them. This means:

  • You can detect certificates issued for your domains by any CA
  • You can detect unauthorized wildcard certificates
  • You can find certificates for subdomains you didn’t know existed
  • You can identify shadow IT (teams getting certificates without going through proper channels)

How to Monitor

Option 1: crt.sh (Manual/API)

# Search for all certificates ever issued for your domain
curl -s "https://crt.sh/?q=example.com&output=json" | \
  jq '.[] | {id, issuer_name, not_before, not_after, common_name}'

# Include subdomains
curl -s "https://crt.sh/?q=%.example.com&output=json" | jq length

Option 2: Certspotter (Automated monitoring)

# SSLMate's Certspotter monitors CT logs and alerts on new certificates
# Free tier: 1 domain, email alerts
# API:
curl "https://api.certspotter.com/v1/issuances?domain=example.com&include_subdomains=true"

Option 3: Google Certificate Transparency Search

https://transparencyreport.google.com/https/certificates
# Search by domain, view all logged certificates

Option 4: Self-hosted monitoring (certstream)

# Real-time CT log stream (all certificates, all domains)
import certstream

def callback(message, context):
    if message['message_type'] == 'certificate_update':
        domains = message['data']['leaf_cert']['all_domains']
        for domain in domains:
            if 'example.com' in domain:
                print(f"ALERT: Certificate issued for {domain}")
                # Send alert to Slack/PagerDuty

certstream.listen_for_events(callback, url='wss://certstream.calidog.io/')

What to Alert On

EventSeverityAction
Certificate from unexpected CAHIGHInvestigate — possible compromise or policy violation
Certificate for unknown subdomainMEDIUMVerify — shadow IT or attacker reconnaissance
Wildcard certificate you didn’t requestCRITICALInvestigate immediately — possible domain hijack
Certificate with unusual validity periodLOWReview — may indicate misconfiguration
Pre-certificate without corresponding final certLOWNormal (CA may have rejected after logging)

CT Logs as a Reconnaissance Tool

CT logs are a double-edged sword. They protect domain owners, but they also reveal information:

What Attackers Learn from CT Logs

# Find all subdomains for a target (reconnaissance)
curl -s "https://crt.sh/?q=%.target.com&output=json" | \
  jq -r '.[].common_name' | sort -u

# Reveals:
# internal-api.target.com
# staging.target.com
# dev-portal.target.com
# vpn.target.com
# admin.target.com
# jenkins.target.com

Every certificate you request for a subdomain reveals that subdomain exists — even if it’s not in public DNS.

Mitigation

  • Use private CA for internal services — private CA certificates aren’t submitted to CT logs
  • Only request public certificates for genuinely public services
  • Use generic names for internal services if you must use public certificates (though this reduces the certificate’s utility)

CT and CAA Records: Defense in Depth

CT detects unauthorized certificates after issuance. CAA (Certificate Authority Authorization) DNS records prevent unauthorized issuance:

; Only Let's Encrypt and DigiCert can issue for this domain
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issue "digicert.com"
example.com. IN CAA 0 issuewild "letsencrypt.org"

; Report violations
example.com. IN CAA 0 iodef "mailto:security@example.com"

CAA: Prevention (CA must check before issuing — if not authorized, issuance is blocked) CT: Detection (if a CA ignores CAA or is compromised, the certificate still appears in CT logs)

Use both. CAA prevents most unauthorized issuance. CT catches anything that slips through.


CT Log Ecosystem

Major CT Log Operators

OperatorLogsNotes
GoogleArgon, Xenon, Icarus, Pilot, etc.Largest operator, runs Chrome CT policy
CloudflareNimbusHigh-availability, fast
DigiCertYeti, NessieCA-operated logs
SectigoMammoth, SabreCA-operated logs
Let’s EncryptOakOperated by ISRG
TrustAsiaMultipleRegional (Asia-Pacific)

Log Lifecycle

CT logs have a lifecycle:

  1. Pending — new log, not yet trusted by browsers
  2. Qualified — accepted by Chrome, SCTs are valid
  3. Read-only — no longer accepting new certificates, but SCTs remain valid
  4. Retired — removed from trust, SCTs no longer accepted

If a log is retired and your certificate only has SCTs from that log, browsers may reject it. This is why CAs embed SCTs from multiple independent logs.


Practical Implementation

For Website Operators

You don’t need to do anything for CT compliance. Your CA handles CT log submission and SCT embedding automatically. Every publicly-trusted CA has been doing this since 2018 (Chrome requirement).

What you SHOULD do:

  1. Set up CT monitoring for your domains (Certspotter, crt.sh alerts, or custom)
  2. Configure CAA DNS records (restrict which CAs can issue for you)
  3. Review CT logs periodically for unexpected certificates
  4. Investigate any certificate you didn’t request

For CA Operators (Private CA)

Private CA certificates don’t need CT logging (they’re not publicly trusted). But you CAN submit to CT logs voluntarily for transparency within your organization.

For Security Teams

CT logs are an intelligence source:

  • Monitor your domains for unauthorized certificates
  • Monitor competitor domains for infrastructure changes
  • Detect phishing domains (certificates for examp1e.com or example-login.com)
  • Track CA behavior (which CAs issue for your domains, how often)

FAQ

Q: Can I opt out of Certificate Transparency? A: No. All publicly-trusted certificates must be logged. If a CA issues a certificate without CT logging, Chrome rejects it. There’s no opt-out for public certificates. (Private CA certificates are not subject to CT requirements.)

Q: Does CT reveal my internal infrastructure? A: Only if you request publicly-trusted certificates for internal services. Use a private CA for internal services — those certificates aren’t logged. Only request public certificates for genuinely public-facing services.

Q: What if I find an unauthorized certificate for my domain in CT logs? A: 1) Verify it’s actually unauthorized (not requested by another team). 2) Contact the issuing CA to request revocation. 3) Check your DNS for compromise (attacker may have passed domain validation). 4) Review CAA records and tighten them. 5) Investigate how the attacker proved domain control.

Q: How quickly do certificates appear in CT logs? A: The Maximum Merge Delay (MMD) is typically 24 hours — meaning the log promises to include the certificate within 24 hours of issuing the SCT. In practice, most logs include certificates within minutes.

Q: Did CT replace certificate pinning? A: Effectively, yes. HTTP Public Key Pinning (HPKP) was deprecated by Chrome in 2018 because misconfiguration caused self-denial-of-service. CT provides the same benefit (detecting unauthorized certificates) without the operational risk of pinning. CT + CAA is the modern replacement for HPKP.

PKI Maturity Assessment

Evaluate your PKI infrastructure in 5 minutes and get a tailored improvement plan.

Take Assessment

Related Insights

PKI

AD CS Certificate Templates Explained: V1-V4, Configuration & Security Hardening

Understand AD CS certificate templates — versions V1 through V4, subject name handling, key usage, enrollment permissions, auto-enrollment, and how to prevent ESC1-ESC8 privilege escalation attacks through proper template configuration.

By Shivam sharma

12 May, 2026 · 07 Mins read

PKIWindows ServerEnterprise Security

PKI

AD CS Troubleshooting: Fix Every Common Certificate Services Error

Fix every common AD CS error — enrollment denied, template not available, RPC server unavailable, CRL failures, auto-enrollment not working, and certificate chain issues. Includes exact certutil commands and event log analysis.

By Sneha gupta

12 May, 2026 · 05 Mins read

PKITroubleshootingWindows Server

PKI

AD CS to Modern PKI Migration Playbook: Phase-by-Phase Enterprise Guide

Step-by-step migration playbook from legacy Microsoft AD CS to modern PKI with ACME, HashiCorp Vault, and cert-manager. Covers assessment, parallel operation, workload migration, rollback plans, and realistic timelines.

By Shivam sharma

12 May, 2026 · 07 Mins read

PKIEnterprise SecurityPractical Guides

Ready to Secure Your Enterprise?

Experience how our cryptographic solutions simplify, centralize, and automate identity management for your entire organization.

Stay ahead on cryptography & PKI

Get monthly insights on certificate management, post-quantum readiness, and enterprise security. No spam.

We respect your privacy. Unsubscribe anytime.