Para distribuir una aplicación iOS en el App Store, es imprescindible contar con un certificado Apple Distribution. Este certificado se usa para firmar el código de la aplicación y permite que Apple verifique que la app fue creada por un desarrollador legítimo.
Este artículo explica detalladamente cómo crear el certificado desde cero utilizando el panel de control del Apple Developer Program.
Requisitos previos
Antes de crear el certificado, verifica lo siguiente:
- Inscripción en el Apple Developer Program ($99 USD/año)
- Sesión iniciada con un Apple ID que tenga permisos de Admin o Account Holder
- Xcode (se recomienda la versión más reciente) instalado en el Mac
- Acceso al Acceso a Llaveros (app integrada en macOS)
Paso 1 — Crear un archivo CSR (Certificate Signing Request)
Una CSR (Certificate Signing Request) es el archivo que se envía a Apple para solicitar un certificado. Se crea con el Acceso a Llaveros.
- Abre el Acceso a Llaveros (busca "Llaveros" en Spotlight)
- En la barra de menús:
Acceso a Llaveros→Asistente de Certificados→Solicitar un Certificado De una Autoridad de Certificación...

-
Rellena los siguientes campos:
Campo Contenido Dirección de correo del usuario Dirección de correo registrada en tu Apple ID Nombre común Un nombre descriptivo (ej.: MyApp Distribution)Dirección de correo de la AC Dejar en blanco La solicitud está Selecciona "Guardada en disco"

- Haz clic en "Continuar" y guarda el archivo CSR (
.certSigningRequest) en la ubicación que prefieras.
Paso 2 — Crear un nuevo certificado en el portal Apple Developer
Accede al sitio web de Apple Developer para emitir el certificado.
URL:
developer.apple.com › Account › Certificates, IDs & Profiles › Certificates
-
Haz clic en el botón
+(Añadir) en la esquina superior derecha

-
En la sección Software, selecciona
Apple Distributiony haz clic en "Continue"

-
En la pantalla "Upload a Certificate Signing Request", sube el archivo
.certSigningRequestcreado en el Paso 1 -
Haz clic en "Continue" → "Download" para descargar el archivo del certificado (
.cer)

Paso 3 — Descargar e instalar el certificado en el Llavero
- Haz doble clic en el archivo
distribution.cerdescargado - Cuando aparezca el diálogo "¿Añadir al Llavero?", haz clic en "Añadir"
- Abre el Acceso a Llaveros y revisa la categoría "Mis certificados" en el llavero de Inicio de sesión
- Si aparece
Apple Distribution: [Your Name/Team] (XXXXXXXXXX), la instalación fue exitosa
Haz clic en el botón ▶ Expandir a la izquierda del certificado para comprobar que aparece una clave privada (🔑). Si la clave privada no es visible, es posible que la CSR se haya generado en un Mac diferente o que la clave privada no exista en el llavero del Mac actual.
Paso 4 — Verificar que Xcode reconoce el certificado
Ubicación:
Xcode › Settings... › Accounts › Manage Certificates...
- Selecciona el Apple ID de destino y haz clic en "Manage Certificates..."
- Comprueba que aparece una entrada
Apple Distributionen la lista - En la pestaña Signing & Capabilities del proyecto, desactivar
Automatically manage signingpermite seleccionar manualmente el certificado Distribution.
Relación entre certificados y perfiles de aprovisionamiento
El sistema de firma de Apple se compone de tres elementos:
- Certificado (Certificate): Demuestra qué desarrollador o equipo firmó la aplicación
- App ID: Identifica de qué aplicación se trata
- Perfil de aprovisionamiento (Provisioning Profile): Define qué combinación de certificado, App ID, dispositivos y funciones está autorizada para ejecutar o distribuir la aplicación
En resumen: el certificado identifica al firmante, el App ID identifica la aplicación, y el perfil de aprovisionamiento es un conjunto de condiciones de uso.
Diferencias con el certificado Apple Development
| Elemento | Apple Development | Apple Distribution |
|---|---|---|
| Propietario | Individual (nombre del Mac en el certificado) | Equipo (Account Holder / Admin únicamente) |
| Uso en varios Macs | ✅ Posible (via .p12) |
✅ Posible (compartible en equipo via .p12) |
| Propósito | Depuración y pruebas | App Store / Ad Hoc |
| TestFlight | ❌ No posible | ✅ Posible |
| Firma en Xcode | Esquema Debug |
Esquema Release |
| Número máximo | 2 por equipo | 3 por equipo |
| Validez | 1 año | 1 año |
Certificado Apple Development vs. cuenta personal
- Certificado Apple Development: Certificado oficial para equipos inscritos en el Apple Developer Program
- Personal Team: Flujo de trabajo para pruebas en dispositivo sin inscripción al Developer Program
| Elemento | Personal Team (gratuito) | Apple Development (Developer Program) |
|---|---|---|
| Requisito | Solo cuenta Apple | Inscripción al Developer Program |
| Uso principal | Pruebas personales | Desarrollo en equipo |
| Distribución | ❌ No posible | ❌ No posible |
| TestFlight / App Store Connect | ❌ No posible | ❌ No posible |
| Validez del perfil | 7 días | Normalmente 1 año |
| App IDs / Dispositivos | Limitados | Disponibles en el Developer Program |
| Funciones avanzadas | Limitadas | Más funciones disponibles |
Tabla de correspondencia por método de distribución
| Método | Certificado | Perfil de aprovisionamiento | Notas |
|---|---|---|---|
| Depuración en dispositivo | Apple Development | Development | Solo dispositivos registrados |
| TestFlight | Apple Distribution | Distribution App Store Connect | Subir a App Store Connect |
| Publicación App Store | Apple Distribution | Distribution App Store Connect | Tras revisión |
| Ad Hoc | Apple Distribution | Ad Hoc | UDIDs registrados |
| Enterprise / In-House | Apple Enterprise Distribution | In-House | Apple Developer Enterprise Program |
Tanto TestFlight como la publicación en App Store utilizan el certificado Apple Distribution.
Firma automática vs. firma manual
Se recomienda activar Automatically manage signing en Xcode para la mayoría de los casos.
Considere la firma manual en las siguientes situaciones:
- Control estricto sobre múltiples targets o Bundle Identifiers
- Gestión explícita en pipeline CI/CD
- Uso de Fastlane Match para gestión centralizada
- Los perfiles automáticos de Xcode no ofrecen el control deseado
Errores frecuentes y soluciones
🔴 "No se encontró clave privada para el certificado"
.cerinstalado en otro Mac: La clave privada solo existe en el Mac donde se generó la CSR- Migración o reemplazo del Mac: La clave privada no se movió correctamente
- Restablecimiento del Llavero: La clave privada se pierde
- Re-descarga del
.cer: Descargado en un Mac diferente al de la CSR
# Pasos para exportar .p12 (Acceso a Llaveros)
# 1. Abrir Acceso a Llaveros
# 2. Clic derecho en el certificado objetivo
# → "Exportar 'Apple Distribution: ...'"
# 3. Establecer contraseña y guardar el .p12
# 4. Doble clic en el otro Mac para importar
🔴 Certificado expirado
Los certificados son válidos 1 año. Renueve en este orden:
- Crear nuevo certificado Apple Distribution
- Regenerar perfiles de aprovisionamiento si es necesario
- Actualizar certificado y perfil en Xcode o CI/CD
- Redistribuir el nuevo
.p12al equipo
🔴 Error "Maximum number of certificates generated"
Máximo 3 certificados Distribution. Elimine los innecesarios antes de crear uno nuevo.
Resumen
- Generar una CSR (
.certSigningRequest) con Acceso a Llaveros - Crear un nuevo certificado
Apple Distributionen developer.apple.com y subir la CSR - Doble clic en el
.cerdescargado para instalarlo en el Llavero - Verificar que el certificado está reconocido en la configuración de Cuentas de Xcode
Para el desarrollo en equipo, explore métodos de compartición segura de .p12 o herramientas como Fastlane Match.
Enlaces de referencia (oficiales de Apple)
- Certificates – Apple Developer: Creación y gestión de certificados
- Choosing a Membership – Apple Developer: Diferencias entre cuenta gratuita y Developer Program
- What is app signing? – Xcode Help: Tipos de certificados y resumen
- Signing & Capabilities workflow – Xcode Help: Cómo funciona la firma automática
- Create, export, and delete signing certificates – Xcode Help: Operaciones con certificados en Xcode
- Distribute your app – Apple Developer: Guía oficial de distribución de apps
- TestFlight – Apple Developer: Guía oficial de distribución beta con TestFlight
