Security

Wildcard Certificates Are a Liability: Why Zero-Trust PKI Demands Per-Service Identities

Wildcard certificates were a convenience shortcut that made sense when you had 10 servers. In a zero-trust world with hundreds of microservices, they're a single point of compromise. Here's why security teams are eliminating them — and how automation makes per-service certificates practical.

M
Marcus Thompson
PKI Solutions Architect
2026-05-20
11 min read

The Wildcard Convenience Trap

Wildcard certificates (*.example.com) were one of the most popular cost-saving measures in early TLS adoption. Instead of buying and managing separate certificates for www.example.com, api.example.com, mail.example.com, and admin.example.com, you bought one wildcard and deployed it everywhere.

The appeal was obvious:

  • Lower cost: One certificate instead of dozens
  • Simpler management: One renewal date to track
  • Easier deployment: Same certificate file on every server
  • Fewer approval workflows: One CSR, one validation, one issuance

For a company running 5-10 subdomains on a handful of servers, wildcards were a reasonable tradeoff. But the infrastructure landscape has changed dramatically, and the tradeoffs have inverted.

The Blast Radius Problem

When a wildcard certificate's private key is compromised, every service using that wildcard is compromised simultaneously. The blast radius isn't one server or one application — it's your entire domain.

What an Attacker Gets

With a compromised *.example.com wildcard key, an attacker can:

Impersonate ANY of these services:
  ├── www.example.com          (customer-facing website)
  ├── api.example.com          (production API)
  ├── admin.example.com        (admin dashboard)
  ├── staging.example.com      (staging environment)
  ├── jenkins.example.com      (CI/CD pipeline)
  ├── grafana.example.com      (monitoring)
  ├── vault.example.com        (secrets management)
  └── anything-else.example.com (any future subdomain)

This means:

  1. Man-in-the-middle attacks against any service on the domain
  2. Credential harvesting by impersonating login pages
  3. API spoofing to intercept or modify data in transit
  4. Lateral movement by presenting valid certificates to internal services that trust the wildcard

Compare: Per-Service Certificate Compromise

If the private key for api.example.com is compromised:

  • The attacker can impersonate api.example.com — and nothing else
  • You revoke and replace one certificate
  • Other services are unaffected
  • The incident scope is contained and auditable
Blast Radius Comparison:

Wildcard *.example.com compromised:
  → ALL services affected
  → Revoke 1 cert, but redeploy to ALL servers
  → Every server has the same key to steal
  → Attacker can impersonate any subdomain

Per-service api.example.com compromised:
  → 1 service affected
  → Revoke and replace 1 cert on 1 service
  → Other services retain their own keys
  → Attacker scope is limited and measurable

Real-World Wildcard Incidents

The Shared Hosting Cascade

A major cloud provider's shared hosting platform used a single wildcard certificate for all customer subdomains on their platform (*.customers.provider.com). When a vulnerability in their management interface exposed the wildcard private key, every customer's subdomain was compromised. The provider couldn't just rotate one certificate — they had to coordinate emergency replacement across thousands of customer configurations simultaneously.

The incident response took 72 hours. With per-customer certificates, it would have been isolated to the compromised management interface.

The DevOps Pipeline Leak

A SaaS company deployed their *.company.com wildcard certificate to their CI/CD pipeline for integration testing. A misconfigured build job logged the certificate's private key to a build artifact that was stored in an accessible S3 bucket. The key was harvested by an automated scanner.

Because the same wildcard was used in production, the attacker could impersonate the company's production API. If the CI/CD environment had used a separate, short-lived certificate (or a different subdomain scope), the production environment would have been unaffected.

The Certificate Sharing Anti-Pattern

A financial services firm used a wildcard certificate across 40+ internal services. When their security team discovered a compromised endpoint, they couldn't determine which of the 40 services was the initial entry point — all traffic looked identical because all services presented the same certificate. The forensic investigation was severely hampered by the inability to correlate traffic to specific service identities.

Zero Trust Fundamentally Conflicts with Wildcards

Zero-trust architecture is built on a core principle: verify every connection, trust no identity implicitly. Wildcard certificates violate this principle in multiple ways:

1. Identity Granularity

Zero trust requires that every workload has a unique, verifiable identity. A wildcard certificate gives the same identity to every service on a domain. You can't enforce policies like "only the payments service can connect to the database" if both the payments service and the marketing blog present the same *.example.com certificate.

2. Least Privilege

Zero trust applies least privilege to network access. A wildcard certificate grants the privilege of impersonating any subdomain — far more privilege than any single service needs.

3. Microsegmentation

Zero trust uses microsegmentation to limit lateral movement. Wildcards undermine microsegmentation because a compromised wildcard key allows impersonation across segment boundaries.

4. Continuous Verification

Zero trust continuously verifies identity throughout a session. With wildcards, there's nothing to differentiate — every service looks the same to the verification layer.

Service Mesh and mTLS: Per-Service Identity Is the Standard

Modern service mesh architectures (Istio, Linkerd, Consul Connect) have made per-service certificates the default, not the exception. In a service mesh:

# Istio automatic mTLS - every pod gets its own certificate apiVersion: security.istio.io/v1 kind: PeerAuthentication metadata: name: default namespace: production spec: mtls: mode: STRICT # Every service must present its own identity # Each service gets a unique SPIFFE identity: # spiffe://cluster.local/ns/production/sa/payments-service # spiffe://cluster.local/ns/production/sa/inventory-service # spiffe://cluster.local/ns/production/sa/notification-service

In this model:

  • Every pod receives a unique certificate from the mesh's certificate authority
  • Certificates are issued automatically — no human intervention
  • Certificates are short-lived (typically 24 hours in Istio's default configuration)
  • Authorization policies reference specific service identities, not domain names

The service mesh model proves that per-service certificates are operationally viable at scale. If Istio can issue and manage certificates for thousands of pods with 24-hour lifetimes, there's no operational argument for wildcards in any environment.

Security Audit Findings: Wildcards as a Red Flag

Security auditors and penetration testers increasingly flag wildcard certificates as findings:

Audit FrameworkWildcard FindingSeverity
SOC 2 Type IIShared cryptographic material across trust boundariesMedium
PCI DSS 4.0Excessive scope of cryptographic credentialsMedium-High
ISO 27001A.10.1.1 — Insufficient cryptographic key management controlsMedium
NIST CSFPR.AC — Excessive access scope for machine identitiesMedium
Zero Trust MaturityIdentity pillar — Shared identity violates per-workload identity requirementHigh

Common auditor questions about wildcards:

  1. "Where is this wildcard private key stored, and how many copies exist?"
  2. "Can you list every system that has access to this key?"
  3. "What is your response time if this key is compromised — for every service using it?"
  4. "How do you distinguish between legitimate services and an attacker using the same certificate?"

If you can't answer these questions quickly and confidently, the wildcard is an unmanaged risk.

The Automation Argument

The only remaining argument for wildcard certificates is operational simplicity. But this argument assumes manual certificate management:

Manual certificate management:
  Wildcard:  1 cert × 1 renewal/year = 1 manual task
  Per-service: 50 certs × 1 renewal/year = 50 manual tasks
  → Wildcards win

Automated certificate management:
  Wildcard:  1 cert × 1 renewal/year = 1 automated task + shared blast radius
  Per-service: 50 certs × 1 renewal/year = 50 automated tasks + isolated blast radius
  → Per-service wins (automation cost is the same, risk is lower)

With certificate automation, the marginal cost of managing 50 certificates vs. 1 certificate is effectively zero. The CLM platform handles issuance, renewal, deployment, and monitoring regardless of how many certificates exist.

The question becomes: would you rather have 1 certificate with a massive blast radius, or 50 certificates with isolated blast radii, when the management cost is identical?

Migration Strategy: Wildcards to Per-Service

Phase 1: Inventory and Map

Before you can eliminate wildcards, you need to know where they are:

wildcard_inventory: for_each_wildcard: - certificate_details: "CN, SAN, issuer, expiry, key location" - deployed_to: "List every server, load balancer, and CDN using this cert" - services_covered: "Map every subdomain/service using this wildcard" - key_copies: "Count how many copies of the private key exist" - key_access: "Who/what has access to each key copy"

Phase 2: Prioritize Replacement

Not all wildcards carry equal risk. Prioritize based on:

  1. External-facing wildcards — highest risk, attacker-accessible
  2. Wildcards spanning trust boundaries (production + staging) — policy violation
  3. Wildcards on servers with many administrators — higher exposure probability
  4. Wildcards protecting sensitive services (auth, payments, admin)
  5. Internal-only wildcards with controlled access — lowest priority

Phase 3: Issue Per-Service Certificates

For each service currently covered by a wildcard:

  1. Generate a unique private key on the target server (never share keys between services)
  2. Issue a certificate with the specific FQDN (e.g., api.example.com, not *.example.com)
  3. Deploy the new certificate alongside the wildcard (dual-cert if your server supports it)
  4. Verify the service works with the new certificate
  5. Remove the wildcard from that server

Phase 4: Revoke and Decommission Wildcards

Once all services have their own certificates:

  1. Remove the wildcard certificate from all servers
  2. Revoke the wildcard certificate
  3. Securely destroy all copies of the wildcard private key
  4. Update your certificate policy to prohibit wildcard issuance
  5. Configure your CLM platform to alert on any new wildcard certificate requests

How Shorter Lifetimes Make Per-Service Certs Safer

The move to 47-day certificate lifetimes (SC-081, March 2029) actually makes per-service certificates safer and easier to manage than wildcards:

  • Compromise window: A compromised per-service key is useful for at most 47 days
  • Automated rotation: Short lifetimes force automation, which makes per-service management trivial
  • Key freshness: New keys generated every renewal cycle means old keys expire naturally
  • Policy enforcement: Each renewal is an opportunity to enforce current security policies

With wildcards under 47-day lifetimes, every renewal becomes a coordinated deployment across every server that shares the wildcard — a recipe for outages.

How TigerTrust Enables Per-Service Certificate Management

TigerTrust makes the transition from wildcards to per-service certificates operationally painless:

  • Wildcard discovery: Identify every wildcard certificate in your infrastructure and map its deployment footprint
  • Automated per-service issuance: Issue individual certificates for each service with zero manual intervention
  • Policy enforcement: Block wildcard certificate requests at the policy level — prevent new wildcards from being introduced
  • Blast radius visualization: See the impact scope of every certificate, highlighting wildcards as high-risk
  • Migration tracking: Dashboard showing your wildcard-to-per-service migration progress
  • Service mesh integration: Native integration with Istio, Linkerd, and cert-manager for Kubernetes-native per-service identity

Wildcard certificates are a relic of a pre-automation era. In a zero-trust world, every service deserves its own identity. Start your wildcard elimination project with TigerTrust at tigertrust.io.

TOPICS

wildcard certificates
zero trust
per-service identity
mTLS
service mesh
certificate security
TigerTrust

SHARE THIS ARTICLE

Ready to Transform Your Certificate Management?

See how TigerTrust can help you automate certificate lifecycle management at scale.