Match (Fastlane): шта је то, управљање сертификатима и подешавање у развоју

Аутор: IT Sectr Објављено: 2026-04-14 Време читања: 10 мин

Match (Fastlane) — је алат за управљање Code Signing сертификатима и Provisioning Profiles за iOS, који их чува у шифрованом Git репозиторијуму. За разлику од ручног управљања преко Apple Developer Portal-а, Match аутоматизује синхронизацију потписа између свих програмера и CI/CD система. Према званичној документацији Fastlane (2026), Match отклања до 90% грешака везаних за неисправне сертификате при изради iOS апликација.

Главно

  • Match — Fastlane алатка за централизовано складиштење и синхронизацију iOS сертификата и Provisioning Profiles-а преко шифрованог Git репозиторијума.
  • Сви сертификати се шифрују помоћу OpenSSL пре чувања у репозиторијуму, што обезбеђује сигурност кључева чак и при јавном приступу репозиторијуму.
  • Match подржава више типова профила: development, appstore, adhoc и enterprise — за различите сценарије израде и дистрибуције.
  • Интеграција са CI/CD омогућава тимовима да аутоматски добијају ажурне сертификате без ручног извоза из Apple Developer Portal-а на свакој машини.
  • Застава --readonly спречава случајну измену сертификата у CI окружењу и гарантује стабилност аутоматског цевовода израде.

Шта је Match (Fastlane)?

Match (Fastlane) — је компонента Fastlane екосистема, намењена централизованом управљању Code Signing сертификатима и Provisioning Profiles-ом за iOS развој. Она решава проблем синхронизације потписа између чланова тима и аутоматизује подешавање сертификата у CI/CD цевоводима без учешћа програмера.

Без Match-а, сваки члан тима ручно генерише сертификате преко Xcode-а или Apple Developer Portal-а, што доводи до конфликата при изради на различитим машинама. Code Signing — је процес дигиталног потписивања iOS апликације, који потврђује њено ауторство и интегритет пре инсталације на уређај корисника.

Према Apple Developer Documentation (2025), неисправно подешавање сертификата је један од најчешћих разлога одбијања приликом слања апликације у App Store. Match аутоматски проверава валидност сертификата и упозорава на истицање рокова, чиме се смањује ризик од одбијања израде у фази Apple верификације.

Користите Match у сваком пројекту са два или више програмера или са CI/CD цевоводом — то ће смањити време подешавања окружења за новог члана тима са 30 минута на једну команду у терминалу.

Како ради Match: шифровано Git складиште

Архитектура Match-а је изграђена на концепту јединственог извора истине за све сертификате iOS тима. Уместо локалног складиштења у кључаоници сваког програмера, Match обједињује сертификате у једном Git репозиторијуму са шифровањем сваке датотеке пре чувања.

Процес се састоји од три фазе. У фази иницијализације, Match генерише све потребне сертификате и профиле преко Apple Developer Portal API-ја. Свака датотека се шифрује алгоритмом AES-256 са кључем који се формира на основу корисничке лозинке. Шифроване датотеке се чувају у Git репозиторијуму и синхронизују са удаљеним сервером путем стандардних Git операција push и pull.

Архитектура шифровања сертификата

Match користи комбинацију OpenSSL и корисничке лозинке за шифровање сертификата и профила. Приступни кључ се задаје преко променљиве окружења MATCH_PASSWORD и не чува се у репозиторијуму, чиме се искључује цурење чак и при компромитовању Git сервера или јавном приступу репозиторијуму.

При захтеву за сертификат, Match учитава шифровану датотеку из репозиторијума, дешифрује је локално користећи лозинку и инсталира у Keychain тренутне машине. Након завршетка израде, сертификати се могу уклонити из Keychain-а ради поштовања сигурносних политика корпоративног окружења — ово спречава коришћење застарелих сертификата у наредним израдама.

Сваки сертификат се чува са именом које садржи идентификатор апликације, тип профила и датум креирања. Ова структура омогућава Match-у да управља верзијама сертификата и, по потреби, враћа претходно стање путем стандардних Git команди revert и reset. Ово је посебно корисно при случајном брисању или преписивању профила.

Подешавање и конфигурација Match-а

Инсталација Match-а се врши заједно са Fastlane-ом преко Ruby менаџера пакета: gem install fastlane. Након инсталације, потребно је иницијализовати складиште сертификата командом fastlane match init, која креира празан Git репозиторијум и генерише датотеку Matchfile са шаблоном основних подешавања.

bash
# Иницијализација Match репозиторијума
fastlane match init

Конфигурација преко Matchfile-а

Датотека Matchfile садржи све параметре повезивања са складиштем сертификата: URL Git репозиторијума, подразумевани тип профила, идентификаторе апликација и акредитиве Apple Developer-а. Пример типичне конфигурације за тим од пет програмера:

ruby
# Matchfile configuration
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")

Параметар type одређује тип профила: :development за отклањање грешака на уређајима програмера, :appstore за објављивање у App Store-у, :adhoc за тестирање на спољним уређајима и :enterprise за корпоративну In-House дистрибуцију ван App Store-а. Сваки тип креира посебан директоријум у репозиторијуму, што омогућава организовање профила по циљним сценаријима израде.

Match подржава више начина аутентификације у Apple Developer Portal-у: двофакторска аутентификација преко Apple ID, App-Specific Password и API кључеви App Store Connect API-ја. За CI/CD се препоручује коришћење API кључева — они не захтевају интерактивни унос кода потврде и не блокирају аутоматске израде при промени уређаја програмера.

Генерисање и синхронизација профила

Након подешавања Matchfile-а, извршава се команда fastlane match development или fastlane match appstore за генерисање и синхронизацију профила. Match аутоматски креира или ажурира сертификате преко Apple Developer Portal API-ја и чува их у репозиторијуму. Apple Developer Portal — је Apple-ова веб интерфејс за управљање сертификатима, идентификаторима апликација и листом дозвољених уређаја програмера.

При првом покретању, Match ће затражити лозинку за шифровање репозиторијума. Ова лозинка мора бити сачувана у менаџеру тајни CI/CD (GitHub Actions Secrets, GitLab CI Variables или Jenkins Credentials) и прослеђена преко променљиве окружења MATCH_PASSWORD. Без ње, Match неће моћи да дешифрује сертификате на другим машинама или у CI окружењу.

Основне Match команде за управљање сертификатима

Интерфејс Match-а се састоји од скупа команди за креирање, ажурирање, синхронизацију и брисање сертификата и профила. Свака команда одговара одређеној радњи у животном циклусу Code Signing-а: од генерисања до потпуног чишћења репозиторијума.

Команде за свакодневни рад

Команда fastlane match development учитава или креира Development сертификате и профиле за отклањање грешака на локалним уређајима. Provisioning Profile — је Apple-ов дигитални документ који повезује сертификат програмера са идентификатором апликације и листом уређаја дозвољених за инсталацију.

За објављивање у App Store-у користи се fastlane match appstore — она генерише Distribution сертификате и AppStore профиле. Команда fastlane match adhoc креира профиле за тестирање на спољним уређајима, а fastlane match enterprise — за корпоративне In-House апликације.

bash
# Креирање Development профила за отклањање грешака
fastlane match development

# Креирање AppStore профила за издавање
fastlane match appstore

# Увоз постојећих ручно креираних сертификата
fastlane match import

Команда fastlane match import омогућава додавање у репозиторијум већ постојећих сертификата — корисно при миграцији са ручног управљања на Match. Параметар --readonly блокира све измене у репозиторијуму, што је критично за CI окружење, где цевовод не сме да креира или брише сертификате и профиле аутоматски.

Match командаНаменаТип профила
match developmentКреирање Development профила за отклањање грешака на уређајимаDevelopment
match appstoreКреирање профила за објављивање у App Store-уAppStore
match adhocПрофили за спољно тестирање на уређајима бета тестераAdHoc
match enterpriseКорпоративни профили за In-House дистрибуцијуEnterprise
match importУвоз претходно креираних сертификата у репозиторијумБило који

За потпуно чишћење репозиторијума користи се команда fastlane match nuke. Она брише све сертификате из Git репозиторијума, из Apple Developer Portal-а и са локалне машине — то је потпуни ресет стања Code Signing-а за пројекат. Команда се примењује само при критичним конфликтима или при преласку на нови Apple Developer налог.

Интеграција Match-а у CI/CD цевовод

CI/CD интеграција Match-а — једна од кључних предности алата. У цевоводу GitHub Actions, GitLab CI, Bitrise или Jenkins, Match аутоматски учитава и инсталира исправне сертификате без учешћа програмера. Ово омогућава потпуно аутоматизовану израду и потписивање iOS апликације од комита до готовог IPA-а.

Типична конфигурација за GitHub Actions укључује инсталацију Fastlane-а, подешавање променљиве MATCH_PASSWORD и покретање Match-а са заставом --readonly. GitHub Actions — је CI/CD платформа од GitHub-а која аутоматизује израду, тестирање и објављивање кода на основу догађаја у репозиторијуму.

bash
# Инсталација Fastlane у CI окружењу
gem install fastlane --no-document

# Покретање Match у read-only режиму без права измене
fastlane match development --readonly

Пре покретања Match-а у CI-ју, потребно је подесити приступ репозиторијуму сертификата. Fastlane аутоматски клонира репозиторијум на основу параметра git_url из Matchfile-а. Приступ репозиторијуму се подешава преко SSH кључа или personal access token-а, који се додају у тајне CI система — ово гарантује да сертификати неће бити компромитовани преко јавног приступа.

Подесите променљиве окружења MATCH_PASSWORD и FASTLANE_APPLE_API_KEY у тајнама вашег CI провајдера. App Store Connect API кључ омогућава Match-у да се аутентификује у Apple Developer Portal-у без двофакторске аутентификације, чиме се искључују интерактивни захтеви у аутоматским израдама и спречава блокирање цевовода.

Типичне грешке при раду са Match-ом

Чак и при исправном подешавању Match-а могу настати грешке везане за истицање сертификата, конфликте профила или неисправну конфигурацију окружења. Дијагностика проблема Match-а се заснива на анализи дневника команде и провери стања Git репозиторијума сертификата на ажурност.

Најчешћа грешка — «You need to provide a password for Match» — настаје када променљива окружења MATCH_PASSWORD није постављена на машини или у CI окружењу. Решење: додајте MATCH_PASSWORD у променљиве окружења система или проследите лозинку преко параметра --keychain_password при покретању Match команде.

Други по учесталости проблем је конфликт сертификата при додавању новог уређаја у AdHoc профил. Решава се командом fastlane match adhoc --force, која поново креира профиле узимајући у обзир нове уређаје. Apple Developer сертификати важе једну годину, након чега израда са њиховим коришћењем бива одбијена од стране App Store Connect-а. Match упозорава на истицање 30 дана пре истека рока.

При грешци «Multiple matches found for...» у репозиторијуму постоји више верзија истог сертификата. Користите команду fastlane match nuke за потпуно чишћење репозиторијума и брисање свих сертификата из Apple Developer Portal-а. Након чишћења, извршите генерисање од нуле — ово гарантује конзистентно стање профила без дупликата и конфликтних верзија.

Често постављана питања

Како Match шифрује сертификате у Git репозиторијуму?

Match користи OpenSSL са AES-256-CBC алгоритмом за шифровање сваке датотеке сертификата пре чувања у Git-у. Кључ за шифровање се формира на основу лозинке MATCH_PASSWORD. Чак и при јавном приступу репозиторијуму, сертификати остају недоступни без познавања лозинке.

Може ли се Match користити без Git репозиторијума?

Не, Match захтева Git репозиторијум за чување шифрованих сертификата. Међутим, репозиторијум може бити локалан ако синхронизација између машина није потребна. У том случају, у параметру git_url наводи се локална путања до директоријума на систему датотека уместо URL-а удаљеног репозиторијума.

Шта радити при конфликту верзија сертификата у тиму?

Конфликти настају када два програмера истовремено генеришу различите сертификате. Решење — користите команду fastlane match nuke за потпуно чишћење свих сертификата у репозиторијуму и Apple Developer Portal-у. Након чишћења, један програмер врши генерисање од нуле и синхронизује преко Git-а.

Како ажурирати сертификате у Match-у након истека?

Match аутоматски открива истекле сертификате при покретању и предлаже њихову замену. За принудно ажурирање извршите fastlane match [type] --force — команда поново креира сертификате и профиле наведеног типа, чак и ако постојећи још увек важе, што је корисно при промени тима програмера.

По чему се Match разликује од ручног управљања сертификатима у Xcode-у?

Ручно управљање захтева генерисање сертификата преко Xcode-а или Developer Portal-а за сваку машину посебно. Match централизује складиштење, шифрује податке, синхронизује их између програмера и CI/CD-а, као и аутоматски проверава валидност и рокове трајања свих потписа без учешћа човека.

Закључци

  • Match — Fastlane алат за управљање Code Signing сертификатима iOS-а преко шифрованог Git репозиторијума као јединственог извора истине.
  • Шифровање засновано на AES-256 и OpenSSL штити сертификате чак и при јавном приступу репозиторијуму, а лозинка се задаје преко променљиве MATCH_PASSWORD.
  • Match подржава четири типа профила: development, appstore, adhoc и enterprise — сваки за свој циљни сценариј дистрибуције апликације.
  • Подешавање се врши преко датотеке Matchfile, у којој се наводе git_url, тип профила, идентификатори апликација и Apple Developer акредитиви.
  • Интеграција са CI/CD преко заставе --readonly омогућава аутоматско добијање сертификата у цевоводима без ризика од измене репозиторијума и конфликата.
  • При настанку проблема користи се команда nuke за потпуно чишћење репозиторијума или --force за принудно ажурирање сертификата и профила.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође