Use when implementing service-to-service security, mTLS, or service mesh patterns. Covers mutual TLS, Istio, Linkerd, certificate management, and service mesh security configurations.
View on GitHubmelodic-software/claude-code-plugins
systems-design
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/melodic-software/claude-code-plugins/blob/main/plugins/systems-design/skills/mtls-service-mesh/SKILL.md -a claude-code --skill mtls-service-meshInstallation paths:
.claude/skills/mtls-service-mesh/# mTLS and Service Mesh Security
Comprehensive guide to securing service-to-service communication with mutual TLS and service mesh patterns.
## When to Use This Skill
- Implementing mTLS between services
- Deploying service mesh (Istio, Linkerd)
- Certificate management for services
- Zero trust networking within clusters
- Service identity and authentication
- Encrypting east-west traffic
## Mutual TLS (mTLS) Fundamentals
### TLS vs mTLS
```text
Standard TLS (one-way):
Client ──────────────────► Server
Client verifies
server identity
Mutual TLS (two-way):
Client ◄────────────────► Server
Both verify
each other
Standard TLS:
- Server presents certificate
- Client validates server
- Client remains anonymous to server
Mutual TLS:
- Server presents certificate
- Client validates server
- Client presents certificate
- Server validates client
- Both identities verified
```
### mTLS Handshake
```text
mTLS Handshake Flow:
1. Client Hello
└── Client → Server: "Hello, I support these ciphers"
2. Server Hello + Certificate
└── Server → Client: "Let's use this cipher"
└── Server → Client: "Here's my certificate"
└── Server → Client: "Please provide your certificate"
3. Client Certificate
└── Client → Server: "Here's my certificate"
4. Certificate Verification
└── Both sides verify:
- Certificate chain valid
- Not expired
- Not revoked
- Identity matches expected
5. Key Exchange
└── Derive shared session key
6. Encrypted Communication
└── All traffic encrypted with session key
```
### Certificate Components
```text
Service Certificate Fields:
Subject:
CN = my-service
O = my-organization
Subject Alternative Names (SANs):
- DNS: my-service.default.svc.cluster.local
- DNS: my-service.default
- DNS: my-service
- URI: spiffe://cluster.local/ns/default/sa/my-service
Issuer: (CA that signed the certificate)
CN = cluster-ca
Validity:
Not Before: 2025-01-01
No