Certificado push de Apple: .p8 o .p12 con Expo
Por Mehdi Azizi
Publicado el , 8 min
Apple ofrece una clave .p8 sin vencimiento para todas tus apps o un certificado .p12 anual. Con Expo, EAS gestiona la clave.
El certificado push de Apple autoriza a un servidor a enviar notificaciones a tu app a través de APNs, el servicio de notificaciones de Apple. Existe en dos formas: un certificado .p12, válido por un año y vinculado a una sola app, o una clave .p8, que no vence y sirve para todas las apps de tu cuenta. Con Expo no necesitas el certificado: EAS te propone crear una clave .p8 en el primer build, y el servicio push de Expo la usa por ti.
La guía sobre el certificado de desarrollador y el provisioning profile menciona la clave push en pocas líneas. Aquí vamos hasta el fondo: la elección entre los dos formatos, los entornos sandbox y producción, la renovación y las fallas que cortan las notificaciones en TestFlight.
Publico mis apps con Expo y EAS. Solys y TradaZen declaran el plugin expo-notifications en su configuración: es el que prepara la app para recibir notificaciones.
Por qué Apple pide un certificado o una clave
Una notificación push sale de un servidor, el tuyo o el de Expo, que se la entrega a APNs, que la lleva al iPhone. Así que APNs tiene que verificar que ese servidor tiene derecho a escribirle a tu app. Apple ofrece dos formas de demostrarlo.
- La conexión por token, con una clave .p8. Según Apple, es más rápida, se puede usar desde varios servidores, y una misma clave cubre todas las apps de tu equipo o una parte. Tu servidor firma con ella un token, que hay que regenerar al menos cada hora.
- La conexión por certificado, con un archivo .p12. Apple aclara que este certificado está vinculado a una sola app y vale un año. Varias apps, varios certificados.
La página de Apple sobre vencimientos lo recuerda: la clave de firma de los tokens APNs nunca vence.
La tabla .p8 / .p12
| Criterio | Clave .p8 | Certificado .p12 |
|---|---|---|
| Duración | No vence | Un año |
| Alcance | Todas tus apps | Una sola app |
| Entorno | Elegido al crearla | Sandbox y producción |
| Renovación | Ninguna, salvo revocación | Cada año |
| Descarga | Una sola vez | Exportación desde el Mac |
| Cantidad | Dos por entorno | Uno por app |
| Uso con Expo | Creada y gestionada por EAS | Ausente de la doc de Expo |
Tres aclaraciones. El archivo .p8 solo se descarga una vez: Apple no lo guarda en tu cuenta. El .p12, en cambio, se exporta desde el llavero del Mac que creó el certificado. Y el límite de dos claves por entorno aplica a las claves de equipo. Para las claves limitadas a ciertas apps, Apple permite hasta 200 por entorno.
La página de Expo sobre las credenciales solo habla de la clave push, y cuenta un máximo de dos por cuenta, sin distinguir entornos ni claves por app. Para una app de Expo, la clave .p8 es la elección correcta.
Sandbox y producción: dos entornos
APNs tiene dos servidores: desarrollo, también llamado sandbox, y producción. Apple reserva el primero para pruebas y el segundo para apps publicadas. La app sabe cuál usar gracias al entitlement aps-environment. Según Apple, su valor sigue al perfil de firma: development con un perfil de desarrollo, production con un perfil de distribución y para TestFlight.
Un build de TestFlight habla entonces con producción, exactamente como el App Store.
Del lado de Expo, dos detalles. La documentación de expo-notifications indica que el entitlement siempre se escribe como development en el proyecto y luego pasa a production en el archivo de un build de release. Y al crearse, el token de Expo queda asociado al entorno de la app, detectado automáticamente: no tienes nada que elegir al enviar.
Si creas la clave tú mismo, Apple te pide su entorno y su alcance: todo el equipo o ciertas apps. Su documentación para desarrolladores describe ahora claves de equipo limitadas a sandbox o a producción, y las claves antiguas válidas en todos lados siguen aceptándose. La ayuda de la cuenta, en cambio, todavía afirma que la clave sirve para ambos entornos. Apple se contradice: quédate con el entorno que eliges al crearla. Una clave reservada a sandbox no servirá ni para TestFlight ni para el App Store.
Cómo gestiona Expo la clave push
Según la guía de configuración de Expo, actualizada el 28 de julio de 2026, tu primer build de desarrollo te propone configurar las notificaciones push y generar una clave APNs. Responde que sí a ambas. Sin EAS Build, ejecuta eas credentials. Necesitas una cuenta de Apple Developer de pago.
Después:
- EAS guarda la clave y la asocia a tu app. Según Expo, una clave sirve para todas las apps que quieras, y subir una nueva no cambia los tokens de Expo Push de tus usuarios.
- Tu servidor no llama a APNs. Envía al servicio push de Expo, que lo transmite a APNs. Expo te pide leer los recibos unos 15 minutos después del envío: ahí aparecen los errores.
- El plugin agrega el entitlement. Declara
expo-notificationsenplugins:
{
"expo": {
"plugins": ["expo-notifications"]
}
}
Dos trampas. La FAQ de Expo dice que Expo Go ya no maneja notificaciones push desde el SDK 53, mientras que la página de expo-notifications solo se refiere a Android. En ambos casos, Expo recomienda un build de desarrollo: prueba con él. Y eliminar la clave con eas credentials la quita de los servidores de Expo, no de tu cuenta de Apple. Para liberar un lugar, revócala en el portal de Apple. Como todo secreto, el archivo .p8 nunca debe terminar en tu repositorio: la regla es la misma que para las claves API de una app de Expo.
Renovar: lo que realmente vence
La clave .p8 no tiene nada que renovar. Solo deja de funcionar si la revocas. Si crees que está comprometida, Apple recomienda crear una clave nueva, cambiarte a ella y solo después revocar la anterior. Para reemplazar la clave con Expo, la FAQ da los pasos: eas credentials, iOS, tu perfil de build, y luego quitar la clave push y generar una nueva.
El certificado .p12 vence cada año. Apple pide actualizarlo antes del vencimiento y vigilar su fecha en el llavero. Una vez vencido o revocado, ya no puedes enviar notificaciones a tu app. Apple no describe una renovación aparte: creas un certificado nuevo desde el identificador de la app, lo instalas en tu servidor antes del vencimiento y luego quitas el anterior. La mejor renovación sigue siendo pasarte a la clave.
¿Gestionas iPhones con Intune u otra herramienta de gestión de dispositivos? No es el mismo certificado. El certificado push de gestión de dispositivos se crea en el Apple Push Certificates Portal y se renueva cada año. Apple recomienda anotar la cuenta de Apple usada: la necesitarás para la renovación.
Las fallas típicas y su solución
Funciona en desarrollo, no en TestFlight
- Estás enviando al token equivocado. El build de TestFlight se registra en producción y obtiene un token nuevo. Un token de tu build de desarrollo no funciona: Apple responde
BadDeviceTokencuando el token no corresponde al entorno. Obtén el token desde la propia app de TestFlight. - La app de producción no tiene credenciales push. Es el diagnóstico de la FAQ de Expo. Revisa la página de credenciales del proyecto en expo.dev, o
eas credentials. - Tu clave está limitada a sandbox. Reemplázala por una clave válida en producción.
- El iPhone no obtiene token. Si instalaste el build de TestFlight encima de un build de Xcode, Expo sugiere reiniciar el dispositivo.
"No valid aps-environment entitlement string found"
Según la FAQ de Expo, este error indica que no hay ninguna clave push configurada para tu proyecto iOS. Revisa la página de credenciales y vuelve a lanzar un build: EAS te propone entonces generar la clave. Verifica también que expo-notifications esté en plugins.
ITMS-90078: Missing Push Notification Entitlement
Apple envía este correo después del envío: tu app parece registrarse en APNs, pero su firma no contiene el entitlement aps-environment. La nota de Expo sobre el SDK 51 lo explica. Desde ese SDK, el entitlement solo se agrega si expo-notifications está instalado. La advertencia viene de dos controles de Apple. El primero compara las capacidades de tu identificador de app con los entitlements de la app. El segundo detecta en el binario un método de registro de notificaciones, que el código de Expo contiene en todas las apps.
Es una advertencia, no un rechazo, aclara Expo. Si usas notificaciones, agrega el plugin y vuelve a hacer un build: EAS sincroniza las capacidades del identificador de app en cada build. Si no, quita la capacidad Push Notifications de tu identificador en el portal de Apple. La advertencia puede persistir, sin consecuencias.
InvalidCredentials o todas las apps mudas de golpe
InvalidCredentials en un recibo significa que tus credenciales push ya no son válidas, a menudo porque la clave fue revocada. Todas las apps que la usaban se callan al mismo tiempo. La solución de Expo: eas credentials y luego una clave nueva. Si el recibo menciona InvalidProviderToken, Expo recomienda volver a hacer un build regenerando la clave push y el perfil.
Antes de activar las notificaciones
Para probar las notificaciones en tu iPhone antes del lanzamiento, sigue TestFlight para probar tu app. Si envías notificaciones silenciosas para despertar la app, relee la guideline 2.5.4 sobre los modos en segundo plano. Toda la cadena, sin Mac, está en publicar una app iOS sin Mac, y los pasos del lanzamiento en la página publicar una aplicación en el App Store.
Antes de tu primer envío, haz el diagnóstico gratuito: te dice qué está bloqueando tu proyecto y te envía mi checklist contra rechazos de Apple. Para construir la app, conectar las suscripciones y publicarla, el iOS & Android Kit sigue el recorrido en cuatro etapas con el código inicial de mis apps, a tu ritmo.
Preguntas frecuentes
¿El certificado push de Apple vence?
El certificado .p12 vence al cabo de un año, y tus notificaciones se detienen si no lo reemplazas. La clave .p8 nunca vence: solo deja de funcionar si la revocas. Es la razón principal para preferir la clave.
¿Hace falta un certificado push por app?
Con un certificado .p12, sí: cada certificado está vinculado a una sola app. Una clave .p8 sirve para todas las apps de tu cuenta. Con Expo, una sola clave puede cubrir todo tu catálogo.
¿Cómo renovar un certificado push de Apple?
Crea un certificado nuevo desde el identificador de tu app, con una nueva solicitud de firma, instálalo en tu servidor y luego quita el anterior. Hazlo antes del vencimiento. Lo más simple sigue siendo pasarte a una clave .p8, que no se renueva.
Perdí mi archivo .p8, ¿qué hago?
Apple solo permite descargarlo una vez. Si EAS creó la clave, Expo la guarda y tus notificaciones siguen funcionando. Si no, crea una clave nueva, agrégala con eas credentials y luego revoca la anterior en el portal de Apple. Los tokens de Expo Push de tus usuarios no cambian.
¿Hay que volver a hacer un build después de cambiar la clave push?
En general, no. La clave sirve al servidor que envía, no a la app instalada, y Expo indica que una clave nueva no cambia los tokens. Excepción: si los recibos indican InvalidProviderToken, Expo recomienda volver a hacer un build con una clave nueva y un perfil nuevo.

