MR
Mayur Rathi
@mayurrathi
⭐ 5 GitHub stars

Mtls Configuration

Configure mutual TLS (mTLS) for zero-trust service-to-service communication. Use when implementing zero-trust networking, certificate management, or securing internal service communication.

mkdir -p ./skills/mtls-configuration && curl -sfL https://raw.githubusercontent.com/mayurrathi/awesome-agent-skills/main/skills/mtls-configuration/SKILL.md -o ./skills/mtls-configuration/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# mTLS Configuration


Comprehensive guide to implementing mutual TLS for zero-trust service mesh communication.


Do not use this skill when


- The task is unrelated to mtls configuration

- You need a different domain or tool outside this scope


Instructions


- Clarify goals, constraints, and required inputs.

- Apply relevant best practices and validate outcomes.

- Provide actionable steps and verification.

- If detailed examples are required, open `resources/implementation-playbook.md`.


Use this skill when


- Implementing zero-trust networking

- Securing service-to-service communication

- Certificate rotation and management

- Debugging TLS handshake issues

- Compliance requirements (PCI-DSS, HIPAA)

- Multi-cluster secure communication


Core Concepts


1. mTLS Flow


```

┌─────────┐ ┌─────────┐

│ Service │ │ Service │

│ A │ │ B │

└────┬────┘ └────┬────┘

│ │

┌────┴────┐ TLS Handshake ┌────┴────┐

│ Proxy │◄───────────────────────────►│ Proxy │

│(Sidecar)│ 1. ClientHello │(Sidecar)│

│ │ 2. ServerHello + Cert │ │

│ │ 3. Client Cert │ │

│ │ 4. Verify Both Certs │ │

│ │ 5. Encrypted Channel │ │

└─────────┘ └─────────┘

```


2. Certificate Hierarchy


```

Root CA (Self-signed, long-lived)

├── Intermediate CA (Cluster-level)

│ │

│ ├── Workload Cert (Service A)

│ └── Workload Cert (Service B)

└── Intermediate CA (Multi-cluster)

└── Cross-cluster certs

```


Templates


Template 1: Istio mTLS (Strict Mode)


```yaml

# Enable strict mTLS mesh-wide

apiVersion: security.istio.io/v1beta1

kind: PeerAuthentication

metadata:

name: default

namespace: istio-system

spec:

mtls:

mode: STRICT

---

# Namespace-level override (permissive for migration)

apiVersion: security.istio.io/v1beta1

kind: PeerAuthentication

metadata:

name: default

namespace: legacy-namespace

spec:

mtls:

mode: PERMISSIVE

---

# Workload-specific policy

apiVersion: security.istio.io/v1beta1

kind: PeerAuthentication

metadata:

name: payment-service

namespace: production

spec:

selector:

matchLabels:

app: payment-service

mtls:

mode: STRICT

portLevelMtls:

8080:

mode: STRICT

9090:

mode: DISABLE # Metrics port, no mTLS

```


Template 2: Istio Destination Rule for mTLS


```yaml

apiVersion: networking.istio.io/v1beta1

kind: DestinationRule

metadata:

name: default

namespace: istio-system

spec:

host: "*.local"

trafficPolicy:

tls:

mode: ISTIO_MUTUAL

---

# TLS to external service

apiVersion: networking.istio.io/v1beta1

kind: DestinationRule

metadata:

name: external-api

spec:

host: api.external.com

trafficPolicy:

tls:

mode: SIMPLE

caCertificates: /etc/certs/external-ca.pem

---

# Mutual TLS to external service

apiVersion: networking.istio.io/v1beta1

kind: DestinationRule

metadata:

name: partner-api

spec:

host: api.partner.com

trafficPolicy:

tls:

mode: MUTUAL

clientCertificate: /etc/certs/client.pem

privateKey: /etc/certs/client-key.pem

caCertificates: /etc/certs/partner-ca.pem

```


Template 3: Cert-Manager with Istio


```yaml

# Install cert-manager issuer for Istio

apiVersion: cert-manager.io/v1

kind: ClusterIssuer

metadata:

name: istio-ca

spec:

ca:

secretName: istio-ca-secret

---

# Create Istio CA secret

apiVersion: v1

kind: Secret

metadata:

name: istio-ca-secret

namespace: cert-manager

type: kubernetes.io/tls

data:

tls.crt: <base64-encoded-ca-cert>

tls.key: <base64-encoded-ca-key>

---

# Certificate for workload

apiVersion: cert-manager.io/v1

kind: Certificate

metadata:

name: my-service-cert

namespace: my-namespace


🎯 Best For

  • Claude users
  • Software engineers
  • Development teams
  • Tech leads

💡 Use Cases

  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Mtls Configuration to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Is Mtls Configuration compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Mtls Configuration?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Mtls Configuration?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/mtls-configuration/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills