Mutual TLS (mTLS) is an extension of Transport Layer Security (TLS) where both client and server authenticate each other using X.509 digital certificates.
It provides a stronger trust model than standard TLS, where only the server presents a certificate.
mTLS is widely used across ecosystems such as:
- API Gateways (WSO2, Kong, Apigee, AWS API Gateway)
- Payment and Financial Networks (Visa VCAS, Mastercard MIP, banking integrations)
- Microservices and Service Meshes (Envoy, Istio, Linkerd, AWS App Mesh)
- Cloud and VPN Security (PrivateLink, Zero Trust Networks, Client VPNs)
| Feature | TLS (One-way) | Mutual TLS (Two-way) |
|---|---|---|
| Server Authenticates | β Yes | β Yes |
| Client Authenticates | β No | β Yes |
| Authentication Method | Username/Password or Token | Digital Certificate |
| Security Level | Good | Very Strong |
| Use Case | Websites, public APIs | Financial, corporate, and secure APIs |
sequenceDiagram
participant C as Client
participant S as Server
Note over C,S: TLS Handshake with Mutual Authentication
C->>S: "Client Hello" (supported ciphers, TLS version)
S->>C: "Server Hello" + Server Certificate
C->>C: Validate Server Certificate (CA or pinned cert)
S->>C: Request Client Certificate
C->>S: Send Client Certificate + Proof (signature)
S->>S: Validate Client Certificate (CA or whitelist)
Note over C,S: Both verified β Encrypted session established
C-->>S: Application data securely transmitted
In mTLS, both sides present and verify certificates issued by a trusted Certificate Authority (CA).
This ensures identity, confidentiality, and integrity across both directions.
There are two main ways organizations manage mTLS certificates:
| Model | Description | Example Use |
|---|---|---|
| Shared Certificate | Both peers (client & server) use the same certificate pair. Simple but less granular. | Private trusted networks, staging setups |
| PKI-based Certificates | Each peer has its own unique certificate issued by a trusted CA. | Financial networks, production-grade systems |
flowchart LR
subgraph "PKI Trust Model"
CA["Root Certificate Authority"]:::ca
Server["Server Certificate<br/>(Issued by CA)"]:::server
Client["Client Certificate<br/>(Issued by CA)"]:::client
CA --> Server
CA --> Client
Client <--> Server
end
classDef ca fill:#FFF3E0,stroke:#F57C00,color:#000
classDef server fill:#E0F7FA,stroke:#006064,color:#000
classDef client fill:#E8F5E9,stroke:#2E7D32,color:#000
β
Recommended: PKI model with certificate rotation and CA-based validation
βοΈ Tools: OpenSSL, AWS ACM, HashiCorp Vault, Entrust, DigiCert, etc.
Across systems like Envoy, Istio, WSO2 API Manager, and Visa Network, mTLS enforcement defines how strictly certificates are required for connections.
| Mode | Description | Typical Use |
|---|---|---|
| Strict | Only mTLS traffic is allowed. Plaintext connections are rejected. | Financial transactions, production APIs |
| Permissive | Both mTLS and plaintext traffic are accepted. | Migration or hybrid environments |
| Passthrough | Gateway forwards encrypted traffic without terminating TLS. | Edge proxy, Visa/3DS message routing |
flowchart TB
subgraph Strict_Mode
Client1["Client (mTLS Only)"]:::client --> Proxy1["Server / Gateway (Strict Mode)"]:::server
end
subgraph Permissive_Mode
Client2a["Client (mTLS)"]:::client --> Proxy2["Server / Gateway (Permissive Mode)"]:::server
Client2b["Client (Plaintext)"]:::client --> Proxy2
end
subgraph Passthrough_Mode
Client3["Client (Encrypted TLS)"]:::client --> Proxy3["Proxy (Passthrough Mode)"]:::server --> Backend["Backend System"]:::service
end
classDef client fill:#E3F2FD,stroke:#1565C0,color:#000
classDef server fill:#FFF8E1,stroke:#F9A825,color:#000
classDef service fill:#E8F5E9,stroke:#2E7D32,color:#000
| Industry / Platform | mTLS Role | Example |
|---|---|---|
| Financial Networks | Secure issuer β network β acquirer communication | Visa VCAS β Issuer CMS (e.g., CardZone) |
| API Gateways | Client authentication at ingress | WSO2 API Manager, Kong, AWS API Gateway |
| Service Mesh | Service-to-service encryption | Istio / Envoy / App Mesh |
| Cloud Interconnects | VPC or PrivateLink encryption | AWS ACM + NLB with client auth |
| Mobile / IoT Devices | Device identity | Certificate-based device onboarding |
| Benefit | Description |
|---|---|
| Mutual Trust | Both sides verify each otherβs identity. |
| Zero Passwords | Authentication without credentials. |
| Resistance to MITM | Prevents man-in-the-middle attacks. |
| Compliance Ready | Meets PCI DSS, PSD2, and Zero Trust requirements. |
- TLS secures communication β mTLS adds mutual identity verification.
- Certificates can be shared (simple) or PKI-based (scalable, secure).
- Enforcement modes (strict, permissive, passthrough) control runtime policy.
- mTLS underpins security in banking, payments, APIs, IoT, and service mesh ecosystems.
- RFC 5246: The Transport Layer Security Protocol (TLS 1.2)
- RFC 8446: TLS 1.3 Specification
- Visa Developer: mTLS Authentication
- WSO2 API Manager mTLS Docs
- Istio mTLS Modes