En el HTTPS regular, solo el servidor prueba su identidad con un certificado. El cliente (navegador) es anónimo — el servidor no sabe quién se está conectando.
TLS mutuo (mTLS) añade un segundo paso: el cliente también presenta un certificado. Ambas partes se autentican mutuamente. El servidor verifica el certificado del cliente contra una CA de confianza, y el cliente verifica el del servidor — de ahí «mutuo».
TLS regular vs TLS mutuo
| TLS regular | TLS mutuo (mTLS) | |
|---|---|---|
| Servidor prueba identidad | Certificado + firma CA | Igual |
| Cliente prueba identidad | Anónimo | Certificado de cliente |
| Autenticación | Unidireccional (solo servidor) | Bidireccional (ambos) |
| Caso de uso | Sitios web públicos | APIs internas, zero trust |
| El cliente necesita | Solo un navegador | Certificado + clave privada |
| Complejidad de configuración | Estándar | Mayor — necesitas gestionar certificados de cliente |
Cuándo usar mTLS
Comunicación servicio a servicio
Microservicios que se comunican entre sí a través de la red. mTLS asegura que solo los servicios autorizados puedan conectarse — no cualquiera que conozca la URL.
Service A ←──mTLS──→ Service B
Both verify: "Are you who you claim to be?"
Arquitectura Zero Trust
En zero trust, ninguna conexión de red es confiable por defecto — incluso dentro de la red corporativa. mTLS reemplaza la confianza a nivel de red (firewalls, VPNs) con confianza a nivel de identidad (certificados).
Seguridad de APIs
Protege APIs sensibles más allá de simples claves API. Una clave API robada puede ser usada por cualquiera. Un certificado de cliente está vinculado a una clave privada específica — más difícil de robar y usar.
Autenticación de dispositivos IoT
Los dispositivos se conectan a un backend con certificados de cliente aprovisionados durante la fabricación. El servidor sabe que está hablando con un dispositivo genuino, no uno suplantado.
Cómo funciona mTLS
- El cliente se conecta e inicia la negociación TLS (igual que TLS regular)
- El servidor envía su certificado — el cliente lo verifica (igual que TLS regular)
- El servidor solicita certificado de cliente — envía un mensaje
CertificateRequest - El cliente envía su certificado — el servidor lo verifica contra una CA de confianza
- Ambas partes calculan las claves de sesión y comienza la comunicación cifrada
Los pasos 3-4 son los que lo hacen «mutuo».
Configuración mTLS en Nginx
server {
listen 443 ssl;
server_name api.example.com;
# Server certificate (same as regular HTTPS)
ssl_certificate /etc/ssl/server-fullchain.pem;
ssl_certificate_key /etc/ssl/server-privkey.pem;
# Client certificate verification
ssl_client_certificate /etc/ssl/client-ca.pem; # CA that signed client certs
ssl_verify_client on; # Require client cert
# Optional: pass client cert info to your app
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-Client-Verify $ssl_client_verify;
}
mTLS vs otros métodos de autenticación
| Método | Nivel de seguridad | Complejidad | Ideal para |
|---|---|---|---|
| Clave API | Bajo (compartible) | Baja | APIs públicas, limitación de tasa |
| OAuth/JWT | Medio | Media | APIs orientadas al usuario |
| mTLS | Alto (vinculado criptográficamente) | Alta | Servicio a servicio, zero trust |
| mTLS + JWT | Máximo | Alta | Autenticación de transporte y aplicación |
mTLS y GetHTTPS
GetHTTPS emite certificados de servidor — los certificados que tu servidor web usa para probar su identidad. Estos son los certificados SSL estándar usados por cada sitio web HTTPS.
Los certificados de cliente para mTLS son típicamente emitidos por una CA privada (la CA interna de tu organización), no una CA pública como Let’s Encrypt. Let’s Encrypt no emite certificados de cliente — solo emite certificados de servidor para dominios públicos.
Preguntas frecuentes
¿Puedo usar Let’s Encrypt para mTLS?
Para el certificado del servidor: sí. Para certificados de cliente: no. Los certificados de cliente necesitan ser emitidos por una CA privada que tú controles — así decides qué clientes están autorizados. Herramientas como openssl, cfssl o step-ca pueden actuar como tu CA privada.
¿mTLS es lo mismo que «autenticación con certificado de cliente»?
Sí. «TLS mutuo», «mTLS», «TLS bidireccional» y «autenticación con certificado de cliente» se refieren a lo mismo — ambas partes presentan certificados durante la negociación TLS.
¿mTLS reemplaza las claves API?
Puede, pero sirven para propósitos diferentes. mTLS prueba la identidad a nivel de transporte (qué servicio se está conectando). Las claves API/JWTs prueban la identidad a nivel de aplicación (qué usuario/permiso). Muchos sistemas usan ambos juntos para defensa en profundidad.
¿Dónde se usa comúnmente mTLS?
Kubernetes (service mesh con Istio/Linkerd), Cloudflare Access, AWS API Gateway (mutual TLS), BeyondCorp de Google Cloud, y la mayoría de implementaciones empresariales de zero-trust.