· seguridad · 11 min read
Confianza con fecha de caducidad: por qué los certificados de 47 días rompen el pinning estático
En 2029, los certificados TLS públicos durarán solo 47 días. Ese número da por jubilada una década de práctica de seguridad en apps móviles y obliga a replantear cómo se establece, rota y revoca la confianza.
Esta es la versión en español de Trust on a Timer: Why 47-Day Certificates Break Static Pinning.
El problema del 8×
Si gestionas 1.000 certificados TLS hoy, produces unos 1.000 eventos de renovación al año. En marzo de 2029, ese mismo inventario generará más de 8.000 renovaciones anuales, y los datos de validación que prueban que controlas tus dominios tendrán que reestablecerse cada 10 días.
Esto no es una previsión: es el calendario que el CA/Browser Forum aprobó en abril de 2025 con la Ballot SC-081v3, respaldado por todos los navegadores principales y 25 autoridades de certificación, sin un solo voto en contra. La reducción progresiva queda así:
| Fecha efectiva | Validez máxima del certificado | Reutilización máxima de DCV |
|---|---|---|
| Hoy (era de 398 días) | 398 días | 398 días |
| 15 marzo 2026 | 200 días | 200 días |
| 15 marzo 2027 | 100 días | 100 días |
| 15 marzo 2029 | 47 días | 10 días |
Tres hitos, tres años, una trayectoria: los certificados de confianza que antes duraban más que tu móvil son ahora más efímeros que un sprint típico.
Esto no es una molestia operativa que absorber con recordatorios en el calendario. Es un cambio arquitectónico que da por jubiladas varias prácticas que la mayoría de organizaciones siguen usando, la principal de ellas el pinning estático de certificados en apps móviles.
Breve historia de cómo llegamos aquí
El pinning tenía sentido en 2011. Cuando se comprometió DigiNotar y se usó para emitir certificados fraudulentos para *.google.com, Chrome detectó el ataque precisamente porque Google tenía embebido un conjunto pequeño de claves públicas de confianza directamente en el navegador. El pinning cortocircuitaba toda la jerarquía de la CA: aunque una CA fraudulenta firmara un certificado malo, el cliente lo rechazaba porque la clave no coincidía con el pin.
La web intentó formalizar esto con HTTP Public Key Pinning (HPKP). Fracasó estrepitosamente: era demasiado fácil dejar tu propio sitio inaccesible sin posibilidad de recuperación ante una mala configuración, y Chrome y Firefox lo deprecaron. Los navegadores se pasaron a Certificate Transparency, que escalaba mejor y no ponía una pistola apuntando al pie de cada operador.
Pero el mundo mobile no hizo esa transición. Las apps móviles siguieron embebiendo certificados o claves públicas directamente en el binario, porque el modelo de amenaza (defenderse de un adversario a nivel estatal o de una CA comprometida en una red hostil) parecía lo bastante importante como para justificar esa rigidez. Y mientras la vida de los certificados no se redujo, la rigidez era tolerable.
Ya no lo es. Y la razón es estructural.
La brecha de asimetría
El white paper de Akamai sobre ciclos de vida de certificados TLS le da a este problema un nombre preciso: la brecha de asimetría (asymmetry gap). Los certificados del servidor rotan a la velocidad de un job de ACME, en cuestión de minutos. Los binarios de las apps rotan a la velocidad de una revisión de la app store más la voluntad del usuario de pulsar “Actualizar”: días, semanas, a veces meses.
Una analogía: imagina una cámara acorazada cuya cerradura se cambia cada 47 días, pero las llaves que se entregan a los clientes del banco están físicamente soldadas en sus carteras y solo pueden reemplazarse visitando una sucursal en persona. Mientras la cerradura cambiaba una vez al año, nadie notaba la incomodidad. Cámbiala cada seis semanas y el esquema entero se derrumba, no porque la cerradura sea mala, sino porque el canal de actualización de las llaves no puede seguir el ritmo.
Esa es la asimetría. El servidor automatiza; el cliente distribuye firmware. Cuando la brecha es pequeña (una rotación al año), el pinning es tolerable. Cuando la brecha es grande (ocho rotaciones al año), cualquier desajuste es una interrupción.
Ya hemos visto este fallo en producción. En 2016, la app de banca móvil de Barclays en el Reino Unido dejó de funcionar para miles de clientes cuando un certificado intermedio que tenían pineado en la app llegó al fin de su vida útil. Los usuarios no podían pagar. La solución requirió una release de emergencia. Eso fue un caso puntual en un mundo de 398 días. En un mundo de 47 días, esta clase de fallo se convierte en un riesgo operativo recurrente.
La propia guía de pinning de OWASP lo lleva reconociendo años: “Si el sitio rota su certificado de forma regular, la aplicación tendrá que actualizarse con regularidad… el pinning llevará a interrupciones.” Era cierto con 398 días. Con 47, es existencial.
Qué sustituye al pinning estático
La respuesta no es “deja de pinear”. El pinning sigue defendiendo contra ataques reales: CAs fraudulentas, MITM en redes hostiles, compromiso de la cadena de suministro de los trust stores. La respuesta es hacer que la identidad pineada dure más que el certificado que la transporta, y hacer que el conjunto de pins sea actualizable sin publicar una nueva versión del binario.
Tres patrones, en orden creciente de madurez:
1. Pinea la clave pública, no el certificado
Esta es la recomendación específica de Akamai en el white paper, y también el enfoque respaldado por OWASP: pinear el hash del Subject Public Key Info (SPKI), no el certificado leaf.
Por qué importa: el SPKI es el hash de la clave pública. Mientras tu CA reemita el certificado con el mismo par de claves en cada renovación (algo que la mayoría de CAs y clientes ACME soportan), el hash SPKI es estable entre rotaciones. El número de serie del certificado, las fechas de validez y la firma cambian. El pin, no.
Es un cambio de una línea en la mayoría de librerías de pinning móviles (Android NetworkSecurityConfig, iOS NSPinnedDomains, OkHttp CertificatePinner, AlamoFire), y convierte la mayoría de eventos de rotación de riesgos de interrupción en no-eventos.
2. Haz que el conjunto de pins sea configurable en tiempo de ejecución
En lugar de pinear los propios certificados, pinea un documento de configuración pequeño y firmado, alojado en un endpoint de alta disponibilidad. La app descarga la lista de pins firmada al arrancar, verifica la firma contra una clave de firmado de larga vida embebida en el binario, y usa el resultado para la sesión.
Ahora tienes dos referencias de confianza con ciclos de vida muy distintos:
- La clave de firmado en el binario, de larga vida y rotada solo en releases mayores.
- El conjunto de pins descargado en tiempo de ejecución, de corta vida y que rota tan a menudo como los certificados.
Approov, Firebase Remote Config y el open-source TrustKit implementan variantes de esto. La arquitectura es sólida independientemente del vendor que elijas.
3. Pasa del pinning a la procedencia
El patrón más moderno abandona el pinning por completo y valida la confianza contra los logs de Certificate Transparency. Los logs de CT son árboles de Merkle append-only que registran cada certificado de confianza pública en el momento de su emisión. Si una CA fraudulenta emite un certificado para tu dominio, aparece en los logs en cuestión de horas, y tu monitorización lo detecta antes de que lo vea ningún cliente.
Esto traslada el modelo de seguridad de “bloquear en el momento de validación” a “detectar en el momento de emisión”. Escala: en lugar de que cada cliente lleve un conjunto de pins, tu equipo de seguridad gestiona una sola suscripción a logs de CT y una regla en el SIEM. Para certificados internos, mTLS con referencias de confianza dinámicas cumple el mismo papel.
El lado del servidor: la parte que controlas
Las apps móviles acapararán los titulares. El lado del servidor es donde está el trabajo real. Algunas cosas que vale la pena resolver antes de marzo de 2026:
Primero el inventario, después la automatización. El white paper de Akamai es directo en esto: “La visibilidad es el prerrequisito fundamental para la seguridad.” La mayoría de organizaciones grandes descubren durante la migración que tienen cientos de certificados que no sabían que existían: shadow IT, servicios dados de baja que alguien olvidó quitar del balanceador de carga, certificados wildcard embebidos en SDKs de terceros. Hasta que no tengas una única fuente de verdad, la automatización solo industrializa el caos.
Adopta ACME en todo lo que puedas. Let’s Encrypt lleva en ciclos de 90 días desde 2015 y gestiona la mayor parte del TLS público en internet. El protocolo funciona. Los clientes son maduros. Para CAs comerciales que necesitan controles de política, ACME External Account Binding (EAB) te permite mantener la automatización preservando los flujos de identidad, facturación y aprobación. Ya no hay ninguna razón plausible para seguir emitiendo certificados por correo electrónico.
Trata los certificados de origen como un problema aparte. Si estás detrás de un CDN, en realidad tienes dos certificados en juego: el que el edge presenta al usuario, y el que tu origen presenta al edge. Ambos quedarán sujetos al nuevo ciclo de vida. El del edge suele gestionarlo el proveedor del CDN y rota automáticamente. El del origen es tuyo, y suele ser el que se olvida.
Si aún no puedes automatizar completamente la rotación del certificado de origen, Akamai recomienda una solución provisional pragmática: pinear un certificado de origen específico en la configuración del edge y rotarlo manualmente con una frecuencia anual o semestral. Compra tiempo sin quedar expuesto, y es un alcance de trabajo mucho más abordable que hacer que cada servicio interno soporte ACME desde el primer día.
Conecta la salud de los certificados al CI/CD. Un health check de TLS fallido debería fallar un despliegue, no despertar a alguien a las 3 de la mañana. Los mismos pipelines que ejecutan tus tests, validan tu configuración y controlan tus despliegues pueden verificar que “todos los hosts que servirá esta release tienen un certificado con al menos N días de validez restante”. El estado de la confianza se convierte en un artefacto de build.
Suscríbete a tus propios logs de CT. Servicios gratuitos como crt.sh y monitorización comercial (el DNS Posture Management de Akamai lo incluye; también la mayoría de plataformas enterprise de PKI) te alertarán cuando se emita cualquier certificado para un dominio que controlas. Así se detecta una emisión fraudulenta (tuya o de un atacante) antes de que importe.
Qué hacer el lunes por la mañana
Si no lees nada más, lee esta lista. Cada punto es abordable en 90 días y tiene impacto real.
- Haz un inventario de cada certificado del que depende tu organización, incluyendo los SDKs de terceros que embebe tu app móvil. Es muy probable que no tengas esa lista.
- Audita cada app móvil en busca de pinning estático. Identifica si pinea certificados leaf, SPKIs o certificados de CA. Las apps con pinning de certificado leaf son tu mayor riesgo.
- Cambia los pins de certificado leaf a pins de SPKI como primer paso de migración. Mismo valor defensivo, riesgo de rotación drásticamente menor.
- Prueba un conjunto de pins configurable en tiempo de ejecución en una app no crítica para aprender el patrón antes de que sea urgente.
- Verifica la automatización ACME en cada certificado del lado del servidor que pueda usarla. Documenta los que no puedan, y lo que haría falta para arreglarlo.
- Suscríbete a alertas de logs de CT para tus dominios principales. No cuesta nada y detecta emisiones fraudulentas al instante.
- Añade un check de “validez TLS” a los health gates de tu CI/CD. Falla los despliegues que sirvan hosts con certificados que caduquen en menos de 14 días.
- Mapea las dependencias de certificados entre edge y origen si estás detrás de un CDN. El problema de los dos certificados es el que más se pasa por alto.
Conclusión
El pinning estático de certificados era una respuesta táctica a un problema real en un mundo donde los certificados cambiaban despacio. Ese mundo ya no existe. El hito de 200 días llega en marzo de 2026, el de 100 días en marzo de 2027, y los 47 días en marzo de 2029. Cada una de esas fechas elimina un margen en el que las prácticas de seguridad heredadas confiaban silenciosamente.
La buena noticia es que las mismas fuerzas que impulsan el cambio (ACME, logs de CT, confianza integrada en CI/CD) también nos dan mejores herramientas de las que teníamos hace una década. La arquitectura existe. Los protocolos son maduros. El soporte de los vendors es amplio. Lo que falta en la mayoría de organizaciones es simplemente la decisión institucional de retirar los patrones viejos antes de que el nuevo calendario los retire por nosotros.
Si eres arquitecto de seguridad, la pregunta no es si actuar. Es si quieres hacer el trabajo en 2026 a tu propio ritmo, o en 2029 bajo presión con usuarios sin acceso a tu app.
Nota: Este post se basa en el white paper de Akamai sobre ciclos de vida de certificados TLS para el marco conceptual de la brecha de asimetría y la recomendación de pinning por SPKI, y en la Ballot SC-081v3 del CA/Browser Forum como registro oficial del calendario. Las opiniones son mías.