How It Works
The DigiCert connector reads certificate orders from CertCentral and private CA certificates from DigiCert ONE. CertCentral orders and DigiCert ONE CAs use separate API hosts and credentials. Flat NDJSON uses the shared PKI events pki_issued_cert_discovered, pki_ca_discovered, and pki_scan_completed.
Authenticate
CertCentral orders use X-DC-DEVKEY; the scanner checks GET /user/me first. DigiCert ONE Private CAs use a separate service-user token in the x-api-key header.
Paginate
GET /order/certificate?limit=1000&offset=N with 429 rate-limit backoff (up to 60 s). Per-order detail call enriches key size and curve.
Assess
When available, CertCentral leaf certificates are downloaded over verified HTTPS and checked against the order's serial and existing fingerprints before parsing. Parsed certificates supply SHA-1 and SHA-256 fingerprints, key and signature algorithms, and certificate assessments. Source-provided order serials, common names, and validity dates are preserved. Certificates with a recognized key algorithm and size are assessed against OMB M-23-02 and CNSA 2.0. Ed25519 and Ed448 are classical, quantum-vulnerable signing algorithms. Unavailable downloads retain order metadata. An order lacking usable key fields remains in inventory, marks the scan partial, and reports its security ratings as unknown. Without a parsed leaf certificate, self-signed status, CA status, certificate validity, and certificate grade remain unknown. A signature hash alone does not establish the full certificate signature algorithm.
Two Required Inventories
A CertCentral key alone cannot read DigiCert ONE Private CAs. If either inventory is not configured or cannot be read, the scanner keeps results from the other service but reports the combined DigiCert scan as partial or failed. A valid empty CA list is a successful empty inventory; HTTP 404 is a request failure.
Prerequisites
Access both accounts
Use your CertCentral account for certificate orders and the appropriate regional DigiCert ONE account for Private CAs.
Prepare separate credentials
In CertCentral: Account โ Account Access โ API Keys โ Add API key.
- Name it something like
TYCHON PQC Scanner - Assign to an account with at least View Orders permission
- Copy the CertCentral key immediately โ it is shown once
- Provision a DigiCert ONE service user with permission to list Private CAs and download their certificates; obtain its API token and regional HTTPS host
Treat both credentials as secrets. Supply them through the process environment and use -config to save them in encrypted configuration; do not put tokens in command arguments.
Verify network access
Allow outbound HTTPS to www.digicert.com for orders and to your DigiCert ONE regional host for Private CAs (default one.digicert.com).
Configuration
Set TYCHON_DIGICERT_API_KEY for CertCentral orders and TYCHON_DIGICERT_ONE_API_KEY for DigiCert ONE Private CAs in the scanner process environment. Set TYCHON_DIGICERT_ONE_URL if your ONE account uses a regional or private-cloud host other than the default. Run -config to save these values in encrypted config.enc; ONE environment values can also override stored values for a scan. Use -digicert-url to override the DigiCert ONE URL for one scan; it takes precedence over the environment and stored URL and does not change the CertCentral URL.
| Setting | Stored | Description |
|---|---|---|
| -config-digicert-apikey | โ config.enc | Legacy command-line way to store the CertCentral order key (X-DC-DEVKEY). Use TYCHON_DIGICERT_API_KEY to keep the key out of command arguments. |
| TYCHON_DIGICERT_API_KEY | โ config.enc when -config runs | CertCentral order key (X-DC-DEVKEY), supplied without a secret-bearing command argument. |
| TYCHON_DIGICERT_ONE_API_KEY | โ config.enc when -config runs | DigiCert ONE service-user token (x-api-key) for Private CA listing and certificate downloads. Separate from the CertCentral key. |
| TYCHON_DIGICERT_ONE_URL | โ config.enc when -config runs | DigiCert ONE HTTPS origin for your region or private cloud; defaults to https://one.digicert.com. |
| -digicert-url | runtime only | DigiCert ONE HTTPS origin for this scan; overrides the environment and stored URL. All URL sources accept private-cloud hosts with valid TLS certificates. |
| -insecure | runtime only | Legacy CertCentral TLS override. DigiCert ONE requests continue to verify TLS certificates. |
Credential Security
Credentials saved with -config are encrypted at rest in config.enc. The scanner sends each credential only to its own service in an authentication header and omits credentials from scan output and errors.
Quick Start Examples
Store both credentials and run first scan
# Have your secret manager provide TYCHON_DIGICERT_API_KEY and
# TYCHON_DIGICERT_ONE_API_KEY to this process. Set TYCHON_DIGICERT_ONE_URL
# for a non-default DigiCert ONE regional or private-cloud host.
./build/certscanner -config
# Read CertCentral orders and DigiCert ONE Private CAs
./build/certscanner -scan-pki -outputformat flatndjson \
-output digicert_certs.ndjson
# Verify CA and scan-health events in the NDJSON output
grep '"event.action":"pki_ca_discovered"' digicert_certs.ndjson
grep '"event.action":"pki_scan_completed"' digicert_certs.ndjson
Send to Elasticsearch
# Configure both PKI and Elasticsearch credentials together in encrypted config.
./build/certscanner -scan-pki -posttoelastic
PKI scan with multiple connectors
# All configured connectors run together under -scan-pki
# (DigiCert + ADCS + Vault + Venafi โ whichever have credentials in config.enc)
./build/certscanner -scan-pki -outputformat flatndjson -output all_pki.ndjson
API Endpoints Used
| Endpoint | Method | Purpose | Notes |
|---|---|---|---|
| CertCentral /services/v2/user/me | GET | Credential verification | Called before CertCentral order enumeration; an auth failure marks the combined scan incomplete |
| DigiCert ONE /certificate-authority/api/v1/ca | GET | Private CA enumeration | x-api-key service-user token; 404 makes the combined scan partial or failed |
| CertCentral /services/v2/order/certificate | GET | Certificate order list (paginated) | limit=1000 per page; 429 backoff up to 60 s |
| CertCentral /services/v2/order/certificate/{id} | GET | Per-order detail (key size, curve) | Called per order; resolves key_size and elliptic_curve missing from list response |
| CertCentral /services/v2/certificate/{id}/download/format/pem_nointermediate | GET | Verified leaf certificate enrichment | Certificate ID from order metadata; redirects rejected, one MiB response limit, bounded timeout and retries. Unavailable leaves retain metadata; invalid or mismatched responses mark the scan partial. |
| DigiCert ONE /certificate-authority/api/v1/ca/{id}/download?format=pem | GET | Private CA certificate download | Validated CA certificates become pki_ca_discovered events |
Rate Limiting
CertCentral order requests use the existing X-RateLimit-Reset handling. DigiCert ONE requests retry HTTP 429 at most twice with short backoff; its CA inventory has a two-minute deadline. If the ONE list is incomplete or the deadline expires, retrieved CA certificates are retained and scan health reports partial or failed status according to the combined result.
Output Fields
DigiCert certificate records are included in the JSON scan report. Flat NDJSON emits pki_issued_cert_discovered for CertCentral orders, pki_ca_discovered for DigiCert ONE CAs, and one pki_scan_completed health event for the combined scan. Health status is success, partial, or failed.
| Field | Value / Format |
|---|---|
| file.path | digicert://www.digicert.com/order/{order_id} or digicert://{one_host}/ca/{ca_id} |
| hash.sha256_certificate | SHA-256 certificate fingerprint when available |
| certificate.subject_common_name | Certificate common name |
| crypto.signature_algorithm | Signature algorithm when available |
| x509.public_key_algorithm | Public key algorithm when supplied for an order or parsed from a CA certificate |
| x509.public_key_size | Public key size when available from CertCentral order detail or a DigiCert ONE CA certificate |
| x509.not_before / not_after | Certificate validity period (RFC 3339) |
| pqc.vulnerable | Certificate PQC vulnerability assessment when key metadata is complete; omitted when unknown |
| pqc.quantum_risk | Quantum risk when assessed |
| pqc.migration_priority | Migration priority when assessed |
Example: CertCentral Order Event (Selected Fields)
{
"event.action": "pki_issued_cert_discovered",
"event.dataset": "pki_certificate",
"tychon.pki.platform.type": "digicert",
"tychon.pki.platform.product": "CertCentral",
"file.path": "digicert://www.digicert.com/order/123456789",
"certificate.subject_common_name": "tychon@tychon.io",
"x509.serial_number": "0A1B2C3D4E5F...",
"crypto.key_algorithm": "RSA",
"x509.public_key_size": 4096
}
PQC Assessment Logic
Every certificate from DigiCert is assessed against OMB M-23-02 and CNSA 2.0 thresholds immediately after enumeration:
| Algorithm | Key Size / Variant | pqc_vulnerable | quantum_risk |
|---|---|---|---|
| RSA | < 2048 bits | true | critical |
| RSA | 2048 bits | true | high |
| RSA | 3072โ4095 bits | true | medium |
| RSA | โฅ 4096 bits | false | medium |
| ECDSA | P-256 (256 bits) | true | high |
| ECDSA | P-384 (384 bits) | true | medium |
| ECDSA | P-521 (521 bits) | false | low |
| ML-DSA / SLH-DSA / FALCON | Any NIST PQC variant | false | low |
CNSA 2.0 Compliance
CNSA 2.0 requires RSA-4096 minimum and recommends migration to ML-DSA (Kyber/Dilithium) for all new certificates. RSA-4096 with SHA-256 yields pqc_vulnerable: false but quantum_risk: medium โ it meets the current floor but is not quantum-safe against a future cryptographically-relevant quantum computer.
PQC Algorithm Handling
The CertCentral order API returns a key_algorithm field and a separate signature_hash field. Classical algorithms (RSA, ECDSA) combine these into a canonical signature algorithm string. Post-quantum algorithms are returned verbatim โ they have no separate hash component.
| CertCentral key_algorithm | signature_hash | crypto.signature_algorithm output |
|---|---|---|
| RSA | sha256 | SHA256-RSA |
| RSA | sha384 | SHA384-RSA |
| ECDSA | sha256 | ECDSA-SHA256 |
| ECDSA | sha384 | ECDSA-SHA384 |
| ML-DSA / ML-DSA-65 | (ignored) | ML-DSA-65 |
| SLH-DSA / SPHINCS+ | (ignored) | SLH-DSA |
| FALCON / FALCON-512 | (ignored) | FALCON-512 |
| ED25519 / ED448 | (ignored) | ED25519 |
| any unknown value | any | passed through verbatim |
Future PQC Algorithms
Unrecognized CertCentral key algorithms are passed through verbatim to crypto.signature_algorithm so they can be investigated. The scanner marks recognized post-quantum algorithms as pqc.vulnerable: false; it does not assume an unknown algorithm is quantum safe.
Troubleshooting
Auth check returned HTTP 401
The API key was rejected. Common causes:
- CertCentral key was copied incorrectly โ update
TYCHON_DIGICERT_API_KEYin your secret manager and save the encrypted configuration again - The API key was deactivated or deleted โ generate a new one in CertCentral โ Account โ Account Access โ API Keys
- The key is for a different CertCentral account or sub-account
Auth check returned HTTP 403
The API key is valid but lacks permission to view orders. The associated account must have at least View Orders permission in CertCentral role settings.
DigiCert ONE CA request returns HTTP 404
Verify the configured DigiCert ONE regional host and access to /certificate-authority/api/v1/ca. The scanner keeps any CertCentral order results but reports the DigiCert scan as partial or failed; HTTP 404 is not a successful empty CA inventory.
DigiCert ONE CA request returns HTTP 401 or 403
Check that TYCHON_DIGICERT_ONE_API_KEY is a current DigiCert ONE service-user token with permission to list Private CAs and download their certificates. The scanner reports authentication or permission failure in scan health; CertCentral orders remain available if that inventory succeeds.
Some certificates show key_size = 0 or quantum_risk = high (unknown key)
Older expired or revoked orders may no longer have certificate metadata attached in the DigiCert API. The per-order detail call returns no certificate object for these records. The connector defaults to a conservative risk = high assessment when key size is unknown. Active certificates always have full metadata.
Scan is slow / backing off on 429
CertCentral order requests use X-RateLimit-Reset handling. DigiCert ONE CA requests retry HTTP 429 at most twice. The ONE CA scan stops after two minutes and reports partial or failed health if the inventory remains incomplete.
CA inventory not configured
A CertCentral key does not authenticate to DigiCert ONE. Provide TYCHON_DIGICERT_ONE_API_KEY through the process environment or save it in config.enc. A CertCentral-only scan can still return orders, but its combined health status is partial when orders succeed.
Zero certificates returned
A scan is complete with zero certificates only when both configured inventories return successfully with no certificate records. Missing credentials, permission errors, request failures, or incomplete CA pages produce partial or failed health instead.