Match (Fastlane) es una herramienta para gestionar certificados Code Signing y perfiles de aprovisionamiento (Provisioning Profiles) de iOS, que los almacena en un repositorio Git cifrado. A diferencia de la gestión manual a través de Apple Developer Portal, Match automatiza la sincronización de firmas entre todos los desarrolladores y sistemas CI/CD. Según la documentación oficial de Fastlane (2026), Match elimina hasta el 90% de los errores relacionados con certificados incorrectos al compilar aplicaciones iOS.
Puntos clave
Match (Fastlane) es un componente del ecosistema Fastlane diseñado para la gestión centralizada de certificados Code Signing y perfiles de aprovisionamiento para el desarrollo iOS. Resuelve el problema de sincronización de firmas entre los miembros del equipo y automatiza la configuración de certificados en pipelines CI/CD sin intervención del desarrollador.
Sin Match, cada miembro del equipo genera manualmente certificados a través de Xcode o Apple Developer Portal, lo que provoca conflictos de compilación en diferentes máquinas. Code Signing es el proceso de firma digital de una aplicación iOS, que confirma su autoría e integridad antes de instalarla en el dispositivo de un usuario.
Según la Documentación para desarrolladores de Apple (2025), la configuración incorrecta de certificados es una de las causas más comunes de rechazo al enviar una aplicación a App Store. Match verifica automáticamente la validez de los certificados y advierte sobre los que están por vencer, lo que reduce el riesgo de rechazo de compilación durante la etapa de verificación de Apple.
Use Match en cualquier proyecto con dos o más desarrolladores o cuando tenga un pipeline CI/CD — reduce el tiempo de configuración del entorno de un nuevo miembro del equipo de 30 minutos a un solo comando en la terminal.
Arquitectura de Match se basa en el concepto de una fuente única de verdad para todos los certificados del equipo iOS. En lugar del almacenamiento local en el llavero de cada desarrollador, Match consolida los certificados en un único repositorio Git con cifrado de cada archivo antes de guardarlo.
El proceso consta de tres etapas. En la etapa de inicialización, Match genera todos los certificados y perfiles necesarios a través de la API de Apple Developer Portal. Cada archivo se cifra con el algoritmo AES-256 con una clave formada a partir de una frase de contraseña definida por el usuario. Los archivos cifrados se guardan en el repositorio Git y se sincronizan con el servidor remoto mediante operaciones estándar Git push y pull.
Match utiliza una combinación de OpenSSL y una frase de contraseña definida por el usuario para cifrar certificados y perfiles. La clave de acceso se establece a través de la variable de entorno MATCH_PASSWORD y no se almacena en el repositorio, lo que evita fugas incluso si el servidor Git se ve comprometido o el repositorio es de acceso público.
Al solicitar un certificado, Match descarga el archivo cifrado del repositorio, lo descifra localmente con la frase de contraseña y lo instala en el llavero de la máquina actual. Una vez completada la compilación, los certificados se pueden eliminar del llavero para cumplir con las políticas de seguridad de entornos corporativos — esto evita el uso de certificados obsoletos en compilaciones posteriores.
Cada certificado se guarda con un nombre que contiene el identificador de la aplicación, el tipo de perfil y la fecha de creación. Esta estructura permite a Match gestionar versiones de certificados y, si es necesario, revertir los cambios a un estado anterior mediante comandos estándar Git revert y reset. Esto es especialmente útil cuando un perfil se elimina o sobrescribe accidentalmente.
Match se instala junto con Fastlane a través del gestor de paquetes Ruby: gem install fastlane. Después de la instalación, inicialice el almacén de certificados con el comando fastlane match init, que crea un repositorio Git vacío y genera un archivo Matchfile con una plantilla de configuración básica.
# Inicializar repositorio de Match
fastlane match init
El archivo Matchfile contiene todos los parámetros de conexión al almacén de certificados: URL del repositorio Git, tipo de perfil predeterminado, identificadores de aplicación y credenciales de Apple Developer. Ejemplo de una configuración típica para un equipo de cinco desarrolladores:
# Configuración de Matchfile
git_url("https://github.com/company/certificates.git")
type(:development)
app_identifier(["com.company.app", "com.company.app.extension"])
username("developer@company.com")
team_id("TEAM123456")
git_branch("main")
El parámetro type define el tipo de perfil: :development para depuración en dispositivos de desarrolladores, :appstore para publicación en App Store, :adhoc para pruebas en dispositivos externos y :enterprise para distribución corporativa In-House fuera de App Store. Cada tipo crea un directorio separado en el repositorio, lo que permite organizar los perfiles según los escenarios de compilación objetivo.
Match admite varios métodos de autenticación para Apple Developer Portal: autenticación de dos factores mediante Apple ID, contraseña específica de aplicación (App-Specific Password) y claves API de App Store Connect. Para CI/CD se recomiendan las claves API — no requieren ingreso interactivo de código de confirmación y no bloquean las compilaciones automatizadas cuando cambia el dispositivo del desarrollador.
Después de configurar Matchfile, ejecute el comando fastlane match development o fastlane match appstore para generar y sincronizar perfiles. Match crea o actualiza automáticamente los certificados a través de la API de Apple Developer Portal y los guarda en el repositorio. Apple Developer Portal es la interfaz web de Apple para gestionar certificados, identificadores de aplicación y listas de dispositivos de desarrolladores aprobados.
En la primera ejecución, Match solicitará una frase de contraseña para cifrar el repositorio. Esta frase debe almacenarse en el gestor de secretos de CI/CD (GitHub Actions Secrets, GitLab CI Variables o Jenkins Credentials) y transmitirse a través de la variable de entorno MATCH_PASSWORD. Sin ella, Match no podrá descifrar los certificados en otras máquinas o en el entorno CI.
Interfaz de Match consta de un conjunto de comandos para crear, actualizar, sincronizar y eliminar certificados y perfiles. Cada comando corresponde a una acción específica en el ciclo de vida de Code Signing: desde la generación hasta la limpieza completa del repositorio.
El comando fastlane match development descarga o crea certificados y perfiles de desarrollo para depuración en dispositivos locales. Provisioning Profile es un documento digital de Apple que vincula un certificado de desarrollador con un identificador de aplicación y una lista de dispositivos autorizados para la instalación.
Para publicar en App Store, use fastlane match appstore — genera certificados de distribución y perfiles de AppStore. El comando fastlane match adhoc crea perfiles para pruebas en dispositivos externos, y fastlane match enterprise para aplicaciones corporativas In-House.
# Crear perfiles de Development para depuración
fastlane match development
# Crear perfiles de AppStore para lanzamiento
fastlane match appstore
# Importar certificados existentes creados manualmente
fastlane match import
El comando fastlane match import permite añadir certificados existentes al repositorio — útil al migrar de la gestión manual a Match. El parámetro --readonly bloquea cualquier cambio en el repositorio, lo que es crítico para entornos CI donde el pipeline no debe crear ni eliminar certificados y perfiles automáticamente.
| Comando Match | Propósito | Tipo de perfil |
|---|---|---|
| match development | Crear perfiles de desarrollo para depuración en dispositivos | Development |
| match appstore | Crear perfiles para publicación en App Store | AppStore |
| match adhoc | Perfiles para pruebas externas en dispositivos de beta testers | AdHoc |
| match enterprise | Perfiles corporativos para distribución In-House | Enterprise |
| match import | Importar certificados creados previamente al repositorio | Cualquiera |
Para una limpieza completa del repositorio, use el comando fastlane match nuke. Elimina todos los certificados del almacenamiento Git, de Apple Developer Portal y de la máquina local — un restablecimiento completo del estado de Code Signing para el proyecto. El comando se utiliza solo en conflictos críticos o al migrar a una nueva cuenta de Apple Developer.
Integración CI/CD de Match es una de las ventajas clave de la herramienta. En pipelines de GitHub Actions, GitLab CI, Bitrise o Jenkins, Match descarga e instala automáticamente los certificados correctos sin intervención del desarrollador. Esto permite la compilación y firma completamente automatizadas de aplicaciones iOS desde el commit hasta un IPA listo.
Una configuración típica de GitHub Actions incluye instalar Fastlane, configurar la variable MATCH_PASSWORD y ejecutar Match con el indicador --readonly. GitHub Actions es la plataforma CI/CD de GitHub que automatiza la compilación, prueba y publicación de código basándose en eventos del repositorio.
# Instalar Fastlane en el entorno CI
gem install fastlane --no-document
# Ejecutar Match en modo solo lectura sin derechos de modificación
fastlane match development --readonly
Antes de ejecutar Match en CI, configure el acceso al repositorio de certificados. Fastlane lo clona automáticamente según el parámetro git_url de Matchfile. El acceso al repositorio se configura mediante una clave SSH o un token de acceso personal, que se añaden a los secretos del sistema CI — esto garantiza que los certificados no se vean comprometidos a través del acceso público.
Establezca las variables de entorno MATCH_PASSWORD y FASTLANE_APPLE_API_KEY en los secretos de su proveedor de CI. La clave API de App Store Connect permite a Match autenticarse en Apple Developer Portal sin autenticación de dos factores, lo que elimina las solicitudes interactivas en compilaciones automatizadas y evita el bloqueo del pipeline.
Incluso con una configuración correcta de Match, pueden ocurrir errores relacionados con certificados caducados, conflictos de perfiles o configuración incorrecta del entorno. Diagnóstico de problemas de Match se basa en analizar los registros de comandos y verificar el estado del repositorio Git para determinar la relevancia de los certificados.
El error más común — «You need to provide a password for Match» — ocurre cuando la variable de entorno MATCH_PASSWORD no está configurada en la máquina o en el entorno CI. Solución: agregue MATCH_PASSWORD a las variables de entorno del sistema o pase la contraseña mediante el parámetro --keychain_password al ejecutar el comando Match.
El segundo problema más frecuente son los conflictos de certificados al agregar un nuevo dispositivo a un perfil AdHoc. Se resuelve con el comando fastlane match adhoc --force, que recrea los perfiles teniendo en cuenta los nuevos dispositivos. Los certificados Apple Developer tienen una validez de un año, después del cual las compilaciones que los utilizan son rechazadas por App Store Connect. Match advierte sobre la caducidad 30 días antes del final del período de validez.
Cuando aparece el error «Multiple matches found for...», existen varias versiones del mismo certificado en el repositorio. Use el comando fastlane match nuke para limpiar completamente el repositorio y eliminar todos los certificados de Apple Developer Portal. Después de la limpieza, realice una generación desde cero — esto garantiza un estado consistente de los perfiles sin duplicados ni versiones conflictivas.
Preguntas frecuentes
Match utiliza OpenSSL con el algoritmo AES-256-CBC para cifrar cada archivo de certificado antes de guardarlo en Git. La clave de cifrado se forma a partir de la frase de contraseña MATCH_PASSWORD. Incluso con acceso público al repositorio, los certificados permanecen inaccesibles sin conocer la contraseña.
No, Match requiere un repositorio Git para almacenar los certificados cifrados. Sin embargo, el repositorio puede ser local si no se requiere sincronización entre máquinas. En este caso, el parámetro git_url especifica una ruta local a un directorio en el sistema de archivos en lugar de la URL de un repositorio remoto.
Los conflictos ocurren cuando dos desarrolladores generan simultáneamente certificados diferentes. La solución es usar el comando fastlane match nuke para limpiar completamente todos los certificados del repositorio y de Apple Developer Portal. Después de la limpieza, un desarrollador realiza la generación desde cero y sincroniza mediante Git.
Match detecta automáticamente los certificados caducados al iniciar y ofrece reemplazarlos. Para una renovación forzada, ejecute fastlane match [type] --force — el comando recrea los certificados y perfiles del tipo especificado incluso si los existentes aún son válidos, lo que es útil al cambiar el equipo de desarrolladores.
La gestión manual requiere generar certificados a través de Xcode o Developer Portal para cada máquina por separado. Match centraliza el almacenamiento, cifra los datos, los sincroniza entre desarrolladores y CI/CD, y verifica automáticamente la validez y caducidad de todas las firmas sin intervención humana.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también