This site is an archive and is no longer updated.
    MediumRunbook

    Discovery Optimization Runbook

    Find every certificate. Miss nothing. Break nothing. This runbook guides PKI teams through optimizing their certificate discovery process for comprehensive coverage.

    2-4 hours
    Last Updated: January 2026
    Progress: 0/82 complete0%
    LinkedInX

    When to Use

    • • Running regular discovery scans and want to find more certificates
    • • Discovery scans are taking too long or missing known certificates
    • • Setting up discovery for the first time with commercial CLM or NMAP
    • • Preparing for compliance audit that requires complete certificate inventory

    Do NOT Use For

    • • You need to renew a specific certificate (use Certificate Renewal Runbook)
    • • Certificate has already expired (use Emergency Replacement Runbook)
    • • Looking for general CLM concepts (see Certificate Discovery Guide)

    Quick Reference (TL;DR)

    1. Define scope: IP ranges, ports, and exclusions
    2. Configure scanner with proper timeouts, SNI, and chain extraction
    3. Run scan with monitoring and adjust parameters as needed
    4. Analyze results, identify blind spots, and establish baselines

    1Phase 1: Pre-Scan Preparation

    Objective: Gather intelligence and define scan scope before running discovery

    Quick scan of a subnet to test connectivity:

    nmap -p 443 --script ssl-cert 10.0.0.0/24 -oX test-scan.xml

    Extract hostnames from DNS zone file:

    # If you have zone file access
    grep -E "^[a-zA-Z0-9]" zone.db | awk '{print $1}' | sort -u > hostnames.txt

    2Phase 2: Discovery Configuration

    Objective: Configure scanner settings for optimal coverage and performance

    NMAP with SNI and full options:

    nmap -p 443,8443,9443 --script ssl-cert \
      --script-args ssl-cert.servername=www.example.com \
      -oX discovery-results.xml target-range

    NMAP with multiple hostnames for SNI:

    # Create hostnames.txt with one hostname per line, then:
    for host in $(cat hostnames.txt); do
      nmap -p 443 --script ssl-cert \
        --script-args ssl-cert.servername=$host \
        target-ip >> results.txt
    done

    OpenSSL for single host verification:

    openssl s_client -connect host:443 -servername hostname \
      </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer

    💡 SNI is critical for finding certificates on shared hosting or CDNs

    💡 Without proper SNI configuration, you may only find default certificates

    3Phase 3: Execute Discovery

    Objective: Run the scan with monitoring and adjust as needed

    Monitor scan progress (NMAP):

    # Press 'v' during scan to increase verbosity
    # Check intermediate XML output for progress
    wc -l discovery-results.xml

    Identify failed hosts from NMAP output:

    # Parse XML for hosts with no ssl-cert results
    grep -B5 "script id="ssl-cert" output=""" results.xml

    4Phase 4: Results Analysis

    Objective: Validate results, categorize findings, and identify gaps

    Parse NMAP XML for expiring certificates:

    # Extract certificates expiring within 30 days
    # Requires xmllint or similar parser
    grep -oP 'Not After: \K[^<]+' results.xml | while read date; do
      exp=$(date -d "$date" +%s 2>/dev/null)
      now=$(date +%s)
      days=$(( (exp - now) / 86400 ))
      [ $days -lt 30 ] && echo "Expires in $days days: $date"
    done

    Quick count of certificates by issuer:

    grep -oP 'issuer=\K[^/]+' results.txt | sort | uniq -c | sort -rn

    5Phase 5: Optimization Actions

    Objective: Improve future scans and establish ongoing monitoring

    💡 Daily scans: High-change environments, CI/CD pipelines

    💡 Weekly scans: Standard production environments

    💡 Monthly scans: Stable infrastructure

    💡 Quarterly: Full comprehensive scan with optimization review

    Troubleshooting

    Problem: High timeout rate (>10%)

    Solution: Reduce parallelism, increase timeout values, check for network congestion or firewall drops

    Problem: Missing certificates on known hosts

    Solution: Add hostnames to SNI probe list - without SNI, you may only find default certificates

    Problem: Partial chains extracted

    Solution: This is usually a server misconfiguration, not a scanner issue. Flag for remediation.

    Problem: Scan never completes

    Solution: Break into smaller IP ranges, add stricter timeouts, check for hung connections

    Problem: Zero results from subnet

    Solution: Firewall is likely blocking scanner IP. Request exception from network team.

    Problem: Duplicate certificates appearing

    Solution: Normal for CDNs and load balancers. Deduplicate by thumbprint in reporting.