Linkerd enables mTLS for TCP traffic among meshed pods by utilizing Root Trust Anchor and Identity Intermediate Issuer certificates.
The Root Trust Anchor acts as the ultimate trust point and signs intermediate CA certificates, ensuring mesh-wide trust without exposing the root key.
Linkerd's Root Trust Anchor certificate is stored in a ConfigMap, providing the public key for all intermediates and end-entity certificates.
New Linkerd proxies receive the Root Trust Anchor certificate during injection, helping bootstrap trust and secure communication.
The proxy initializes by loading the trust-anchor certificate, generating a key pair, creating a CSR with the proxy's identity, and starting the Rust identity client.
The identity client obtains the ServiceAccount JWT, Root Trust Anchor cert, private key, and CSR to issue a unique Leaf Certificate for the proxy's SPIFFE ID.
The Identity Intermediate Issuer Certificate, located in the linkerd-identity-issuer secret, validates ServiceAccount tokens and issues certificates with SPIFFE URIs.
The Identity service constructs x509.Certificate templates based on the CSR, signs certificates, and returns them to the proxy for mTLS.
The proxy consumes the received certificate for mTLS, automatically renewing it when necessary by generating new CSRs for rotation.
The flow involves trust anchor setup, certificate generation, proxy identity validation, and automated rotation to maintain secure communication within the Linkerd service mesh.