Zero Trust and Certificates
Key Takeaways
- Zero trust assumes the network is hostile — every connection must be authenticated and encrypted regardless of source
- Certificates provide the cryptographic identity that zero trust requires: mTLS authenticates both sides of every connection
- Zero trust without certificate automation is impossible at scale — short-lived certificates for every workload require full lifecycle automation
- The shift from network perimeter to identity perimeter means certificate management becomes the foundation of security architecture
Zero trust is a security model that eliminates implicit trust based on network location. In traditional architectures, being “inside the network” grants access. In zero trust, nothing is trusted by default — every request must be authenticated, authorized, and encrypted regardless of where it originates. Certificates are the mechanism that makes this possible: they provide cryptographic proof of identity (mTLS), encrypt all communication (TLS), and enable fine-grained authorization policies based on verified identity rather than IP addresses.
Why it matters
- Network is not a security boundary — cloud environments, remote work, and microservices mean there’s no meaningful “inside” anymore. Attackers who breach the perimeter move laterally freely in traditional architectures. Zero trust stops lateral movement by requiring authentication at every hop.
- Certificates replace network trust — instead of “this request came from the trusted subnet, so it’s allowed,” zero trust says “this request has a valid certificate proving it’s the payment service, and the payment service is authorized to call the database service.”
- Encryption everywhere — zero trust mandates encryption for all traffic, not just external-facing. East-west traffic (service-to-service within the data center) must be encrypted. This requires certificates for every internal service.
- Scale challenge — if every service needs a certificate, and every connection requires mTLS, you need thousands of certificates with automated lifecycle management. Manual certificate management is incompatible with zero trust.
- Compliance alignment — NIST SP 800-207 (Zero Trust Architecture), CISA Zero Trust Maturity Model, and DoD Zero Trust Reference Architecture all specify certificate-based authentication as a core component.
How it works
- Identity issuance — every workload receives a cryptographic identity (X.509 certificate with SPIFFE ID, or short-lived token). Issued by a trusted CA (service mesh, SPIRE, cert-manager).
- mTLS everywhere — all service-to-service communication uses mutual TLS. Both sides present certificates. Both sides verify the other’s identity.
- Policy enforcement — authorization policies specify which identities can access which resources. Policies reference cryptographic identities, not network addresses.
- Continuous verification — identity is verified on every request, not just at session establishment. Short-lived certificates (hours) ensure that revoked access takes effect quickly.
- Encryption in transit — all traffic is encrypted regardless of network segment. No plaintext communication, even on “trusted” internal networks.
- Least privilege — each identity has only the permissions it needs. Certificates encode the workload’s identity; policies determine what that identity can do.
In real systems
Google BeyondCorp (original zero trust implementation):
- Every device has a certificate (device identity)
- Every user authenticates via SSO (human identity)
- Access decisions based on: user identity + device identity + device health
- No VPN — all applications accessible from any network
- mTLS between all internal services
- Access proxy verifies identity on every request
Kubernetes zero trust with Istio:
# 1. Encrypt all traffic (mTLS strict)
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: istio-system
spec:
mtls:
mode: STRICT
# 2. Default deny all traffic
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: deny-all
namespace: production
spec:
{} # Empty spec = deny all
# 3. Explicitly allow specific identity-based access
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-frontend-to-api
spec:
selector:
matchLabels:
app: api-service
rules:
- from:
- source:
principals: ["cluster.local/ns/production/sa/frontend"]
to:
- operation:
methods: ["GET", "POST"]
SPIRE for multi-environment zero trust:
# Workloads in different environments get SPIFFE identities
# Kubernetes pod:
spiffe://example.com/k8s/production/payment-service
# VM workload:
spiffe://example.com/vm/datacenter-1/legacy-api
# Cloud function:
spiffe://example.com/cloud/gcp/data-processor
# All authenticate to each other via mTLS using SPIFFE SVIDs
# Authorization policies reference SPIFFE IDs regardless of environment
Certificate requirements for zero trust:
Zero trust certificate characteristics:
- Short-lived (hours, not years) — limits compromise window
- Automated issuance (no manual CSR process)
- Per-workload (not shared across services)
- Identity-rich (SPIFFE ID, service account, namespace in SAN)
- Continuously rotated (before expiry, automatically)
- Centrally monitored (detect issuance anomalies)
Where it breaks
Certificates without authorization policies — an organization deploys mTLS everywhere (all traffic encrypted and authenticated) but doesn’t implement authorization policies. Every service can call every other service — the certificates prove identity but nothing restricts access. mTLS without authorization is just encryption, not zero trust. You need both: authentication (who are you?) AND authorization (are you allowed to do this?).
Legacy systems can’t do mTLS — a zero trust initiative requires mTLS for all communication, but legacy applications (mainframes, old databases, third-party appliances) can’t present client certificates. The options: proxy the legacy system behind a sidecar that handles mTLS (service mesh pattern), create an exception with compensating controls (network segmentation + monitoring), or modernize the application. Each legacy system becomes a gap in the zero trust architecture.
Certificate automation not ready for zero trust scale — zero trust requires certificates for every workload, rotated frequently. An organization with 5,000 services needs 5,000+ certificates with automated lifecycle. If the certificate infrastructure can’t handle this scale (CA rate limits, slow issuance, manual approval workflows), zero trust deployment stalls. Certificate automation must be solved before zero trust can be implemented — not after.
Operational insight
Zero trust doesn’t eliminate trust — it moves trust from the network to the identity system. In a perimeter model, you trust the firewall. In zero trust, you trust the CA that issues certificates, the policy engine that makes authorization decisions, and the identity provider that authenticates workloads. If any of these are compromised, zero trust fails just as completely as a breached firewall. The difference: these trust anchors (CA, policy engine, IdP) are smaller, more defined, and more protectable than an entire network perimeter. Zero trust concentrates trust into a few critical systems rather than distributing it across the network — making it easier to protect but more catastrophic if those few systems fail.
Related topics
Ready to Secure Your Enterprise?
Experience how our cryptographic solutions simplify, centralize, and automate identity management for your entire organization.