Match (Fastlane): co to jest, zarządzanie certyfikatami i konfiguracja w programowaniu

Autor: IT Sectr Opublikowano: 2026-04-14 Czas czytania: 10 min

Match (Fastlane) to narzędzie do zarządzania certyfikatami Code Signing i Provisioning Profiles iOS, które przechowuje je w zaszyfrowanym repozytorium Git. W przeciwieństwie do ręcznego zarządzania przez Apple Developer Portal, Match automatyzuje synchronizację podpisów między wszystkimi programistami i systemami CI/CD. Według oficjalnej dokumentacji Fastlane (2026), Match eliminuje do 90% błędów związanych z nieprawidłowymi certyfikatami przy budowaniu aplikacji iOS.

Najważniejsze

  • Match — narzędzie Fastlane do centralnego przechowywania i synchronizacji certyfikatów iOS oraz Provisioning Profiles przez zaszyfrowane repozytorium Git.
  • Wszystkie certyfikaty są szyfrowane za pomocą OpenSSL przed zapisaniem w repozytorium, co zapewnia bezpieczeństwo kluczy nawet przy publicznym dostępie do repozytorium.
  • Match obsługuje kilka typów profili: development, appstore, adhoc i enterprise — dla różnych scenariuszy budowania i dystrybucji.
  • Integracja z CI/CD pozwala zespołom automatycznie uzyskiwać aktualne certyfikaty bez ręcznego eksportu z Apple Developer Portal na każdej maszynie.
  • Flaga --readonly zapobiega przypadkowej zmianie certyfikatów w środowisku CI i gwarantuje stabilność automatycznego pipeline'u budowania.

Czym jest Match (Fastlane)?

Match (Fastlane) to komponent ekosystemu Fastlane przeznaczony do centralnego zarządzania certyfikatami Code Signing i Provisioning Profiles dla programowania iOS. Rozwiązuje problem synchronizacji podpisów między członkami zespołu i automatyzuje konfigurację certyfikatów w pipeline'ach CI/CD bez udziału programisty.

Bez Match każdy członek zespołu ręcznie generuje certyfikaty przez Xcode lub Apple Developer Portal, co prowadzi do konfliktów przy budowaniu na różnych maszynach. Code Signing to proces cyfrowego podpisywania aplikacji iOS, który potwierdza jej autorstwo i integralność przed instalacją na urządzeniu użytkownika.

Według Apple Developer Documentation (2025), nieprawidłowa konfiguracja certyfikatów jest jedną z najczęstszych przyczyn odrzucenia przy wysyłaniu aplikacji do App Store. Match automatycznie sprawdza ważność certyfikatów i ostrzega o wygasających terminach, co zmniejsza ryzyko odrzucenia kompilacji na etapie weryfikacji Apple.

Używaj Match w każdym projekcie z dwoma lub więcej programistami lub przy obecności pipeline'u CI/CD — skróci to czas konfiguracji środowiska nowego członka zespołu z 30 minut do jednej komendy w terminalu.

Jak działa Match: szyfrowane repozytorium Git

Architektura Match opiera się na koncepcji pojedynczego źródła prawdy dla wszystkich certyfikatów iOS zespołu. Zamiast lokalnego przechowywania w pęku kluczy każdego programisty, Match łączy certyfikaty w jednym repozytorium Git z szyfrowaniem każdego pliku przed zapisaniem.

Proces składa się z trzech etapów. Na etapie inicjalizacji Match generuje wszystkie niezbędne certyfikaty i profile przez API Apple Developer Portal. Każdy plik jest szyfrowany algorytmem AES-256 z kluczem utworzonym na podstawie hasła użytkownika. Zaszyfrowane pliki są zapisywane w repozytorium Git i synchronizowane z serwerem zdalnym przez standardowe operacje Git push i pull.

Architektura szyfrowania certyfikatów

Match używa kombinacji OpenSSL i hasła użytkownika do szyfrowania certyfikatów i profili. Klucz dostępu jest ustawiany przez zmienną środowiskową MATCH_PASSWORD i nie jest przechowywany w repozytorium, co eliminuje wyciek nawet przy kompromitacji serwera Git lub publicznym dostępie do repozytorium.

Przy żądaniu certyfikatu Match pobiera zaszyfrowany plik z repozytorium, odszyfrowuje go lokalnie za pomocą hasła i instaluje w Keychain bieżącej maszyny. Po zakończeniu kompilacji certyfikaty mogą zostać usunięte z Keychain w celu przestrzegania polityk bezpieczeństwa środowiska korporacyjnego — zapobiega to używaniu przestarzałych certyfikatów w kolejnych kompilacjach.

Każdy certyfikat jest zapisywany z nazwą zawierającą identyfikator aplikacji, typ profilu i datę utworzenia. Taka struktura pozwala Match zarządzać wersjami certyfikatów i w razie potrzeby wycofywać zmiany do poprzedniego stanu za pomocą standardowych komend Git revert i reset. Jest to szczególnie przydatne przy przypadkowym usunięciu lub nadpisaniu profilu.

Konfiguracja Match

Instalacja Match odbywa się razem z Fastlane przez menedżer pakietów Ruby: gem install fastlane. Po instalacji należy zainicjalizować repozytorium certyfikatów komendą fastlane match init, która tworzy puste repozytorium Git i generuje plik Matchfile z szablonem podstawowych ustawień.

bash
# Inicjalizacja repozytorium Match
fastlane match init

Konfiguracja przez Matchfile

Plik Matchfile zawiera wszystkie parametry połączenia z repozytorium certyfikatów: URL repozytorium Git, domyślny typ profili, identyfikatory aplikacji i dane uwierzytelniające Apple Developer. Przykład typowej konfiguracji dla zespołu pięciu programistów:

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")

Parametr type określa typ profili: :development do debugowania na urządzeniach programistów, :appstore do publikacji w App Store, :adhoc do testowania na zewnętrznych urządzeniach i :enterprise do dystrybucji korporacyjnej In-House poza App Store. Każdy typ tworzy oddzielny katalog w repozytorium, co pozwala organizować profile według docelowych scenariuszy kompilacji.

Match obsługuje kilka sposobów uwierzytelniania w Apple Developer Portal: uwierzytelnianie dwuskładnikowe przez Apple ID, App-Specific Password i klucze API App Store Connect API. Dla CI/CD zaleca się używanie kluczy API — nie wymagają one interaktywnego wprowadzania kodu potwierdzenia i nie blokują automatycznych kompilacji przy zmianie urządzenia programisty.

Generowanie i synchronizacja profili

Po skonfigurowaniu Matchfile wykonuje się komendę fastlane match development lub fastlane match appstore w celu wygenerowania i synchronizacji profili. Match automatycznie tworzy lub aktualizuje certyfikaty przez API Apple Developer Portal i zapisuje je w repozytorium. Apple Developer Portal to interfejs webowy Apple do zarządzania certyfikatami, identyfikatorami aplikacji i listą dozwolonych urządzeń programistów.

Przy pierwszym uruchomieniu Match poprosi o hasło do szyfrowania repozytorium. To hasło powinno być przechowywane w menedżerze sekretów CI/CD (GitHub Actions Secrets, GitLab CI Variables lub Jenkins Credentials) i przekazane przez zmienną środowiskową MATCH_PASSWORD. Bez niego Match nie będzie w stanie odszyfrować certyfikatów na innych maszynach lub w środowisku CI.

Podstawowe komendy Match do zarządzania certyfikatami

Interfejs Match składa się z zestawu komend do tworzenia, aktualizacji, synchronizacji i usuwania certyfikatów oraz profili. Każda komenda odpowiada określonej czynności w cyklu życia Code Signing: od generacji do całkowitego czyszczenia repozytorium.

Komendy do codziennej pracy

Komenda fastlane match development pobiera lub tworzy certyfikaty Development i profile do debugowania na lokalnych urządzeniach. Provisioning Profile to cyfrowy dokument Apple, który łączy certyfikat programisty z identyfikatorem aplikacji i listą dozwolonych do instalacji urządzeń.

Do publikacji w App Store używa się fastlane match appstore — generuje certyfikaty Distribution i profile AppStore. Komenda fastlane match adhoc tworzy profile do testowania na zewnętrznych urządzeniach, a fastlane match enterprise — dla aplikacji korporacyjnych In-House.

bash
# Tworzenie profili Development do debugowania
fastlane match development

# Tworzenie profili AppStore do wydania
fastlane match appstore

# Import istniejących ręcznie certyfikatów
fastlane match import

Komenda fastlane match import pozwala dodać do repozytorium już istniejące certyfikaty — przydatne przy migracji z ręcznego zarządzania na Match. Parametr --readonly blokuje wszelkie zmiany w repozytorium, co jest krytyczne dla środowiska CI, gdzie pipeline nie powinien tworzyć ani usuwać certyfikatów i profili automatycznie.

Komenda MatchPrzeznaczenieTyp profilu
match developmentTworzenie profili Development do debugowania na urządzeniachDevelopment
match appstoreTworzenie profili do publikacji w App StoreAppStore
match adhocProfile do zewnętrznego testowania na urządzeniach beta-testerówAdHoc
match enterpriseProfile korporacyjne do dystrybucji In-HouseEnterprise
match importImport wcześniej utworzonych certyfikatów do repozytoriumDowolny

Do całkowitego czyszczenia repozytorium używa się komendy fastlane match nuke. Usuwa ona wszystkie certyfikaty z repozytorium Git, z Apple Developer Portal i z lokalnej maszyny — to całkowity reset stanu Code Signing dla projektu. Komenda jest stosowana tylko przy krytycznych konfliktach lub przy przejściu na nowe konto Apple Developer.

Integracja Match w pipeline CI/CD

Integracja CI/CD Match to jedna z kluczowych zalet narzędzia. W pipeline GitHub Actions, GitLab CI, Bitrise lub Jenkins Match automatycznie pobiera i instaluje prawidłowe certyfikaty bez udziału programisty. Pozwala to zrealizować w pełni zautomatyzowane budowanie i podpisywanie aplikacji iOS od commita do gotowego IPA.

Typowa konfiguracja dla GitHub Actions obejmuje instalację Fastlane, ustawienie zmiennej MATCH_PASSWORD i uruchomienie Match z flagą --readonly. GitHub Actions to platforma CI/CD od GitHub, która automatyzuje budowanie, testowanie i publikację kodu na podstawie zdarzeń w repozytorium.

bash
# Instalacja Fastlane w środowisku CI
gem install fastlane --no-document

# Uruchomienie Match w trybie tylko do odczytu bez praw do zmian
fastlane match development --readonly

Przed uruchomieniem Match w CI należy skonfigurować dostęp do repozytorium certyfikatów. Fastlane automatycznie klonuje je na podstawie parametru git_url z Matchfile. Dostęp do repozytorium konfiguruje się przez klucz SSH lub personal access token, które są dodawane do sekretów systemu CI — gwarantuje to, że certyfikaty nie zostaną skompromitowane przez otwarty dostęp.

Skonfiguruj zmienne środowiskowe MATCH_PASSWORD i FASTLANE_APPLE_API_KEY w sekretach swojego dostawcy CI. Klucz API App Store Connect pozwala Match uwierzytelnić się w Apple Developer Portal bez uwierzytelniania dwuskładnikowego, co eliminuje interaktywne zapytania w automatycznych kompilacjach i zapobiega blokowaniu pipeline'u.

Typowe błędy podczas pracy z Match

Nawet przy prawidłowej konfiguracji Match mogą występować błędy związane z wygaśnięciem certyfikatów, konfliktami profili lub nieprawidłową konfiguracją środowiska. Diagnostyka problemów Match opiera się na analizie logów komendy i sprawdzeniu stanu repozytorium Git certyfikatów pod kątem aktualności.

Najczęstszy błąd — „You need to provide a password for Match„ — występuje, gdy zmienna środowiskowa MATCH_PASSWORD nie jest ustawiona na maszynie lub w środowisku CI. Rozwiązanie: dodać MATCH_PASSWORD do zmiennych środowiskowych systemu lub przekazać hasło przez parametr --keychain_password przy uruchamianiu komendy Match.

Drugi pod względem częstotliwości problem — konflikt certyfikatów przy dodawaniu nowego urządzenia do profilu AdHoc. Rozwiązuje się go komendą fastlane match adhoc --force, która odtwarza profile z uwzględnieniem nowych urządzeń. Apple Developer certyfikaty są ważne jeden rok, po czym kompilacja z ich użyciem jest odrzucana przez App Store Connect. Match ostrzega o wygaśnięciu na 30 dni przed końcem terminu.

Przy błędzie „Multiple matches found for...„ w repozytorium znajduje się kilka wersji tego samego certyfikatu. Użyj komendy fastlane match nuke do całkowitego czyszczenia repozytorium i usunięcia wszystkich certyfikatów z Apple Developer Portal. Po czyszczeniu wykonaj generację od nowa — gwarantuje to spójny stan profili bez duplikatów i konfliktujących wersji.

Często zadawane pytania

Jak Match szyfruje certyfikaty w repozytorium Git?

Match używa OpenSSL z algorytmem AES-256-CBC do szyfrowania każdego pliku certyfikatu przed zapisaniem w Git. Klucz szyfrowania jest tworzony na podstawie hasła MATCH_PASSWORD. Nawet przy publicznym dostępie do repozytorium certyfikaty pozostają niedostępne bez znajomości hasła.

Czy można używać Match bez repozytorium Git?

Nie, Match wymaga repozytorium Git do przechowywania zaszyfrowanych certyfikatów. Jednak repozytorium może być lokalne, jeśli synchronizacja między maszynami nie jest wymagana. W takim przypadku w parametrze git_url podaje się ścieżkę lokalną do katalogu w systemie plików zamiast URL zdalnego repozytorium.

Co robić przy konflikcie wersji certyfikatów w zespole?

Konflikty występują, gdy dwóch programistów jednocześnie generuje różne certyfikaty. Rozwiązanie — użyj komendy fastlane match nuke do całkowitego czyszczenia wszystkich certyfikatów w repozytorium i w Apple Developer Portal. Po czyszczeniu jeden programista wykonuje generację od nowa i synchronizuje przez Git.

Jak odnowić certyfikaty w Match po ich wygaśnięciu?

Match automatycznie wykrywa wygasłe certyfikaty przy uruchomieniu i proponuje ich wymianę. Do wymuszonego odnowienia wykonaj fastlane match [type] --force — komenda odtwarza certyfikaty i profile określonego typu, nawet jeśli istniejące są jeszcze ważne, co jest przydatne przy zmianie zespołu programistów.

Czym Match różni się od ręcznego zarządzania certyfikatami w Xcode?

Ręczne zarządzanie wymaga generowania certyfikatów przez Xcode lub Developer Portal dla każdej maszyny osobno. Match centralizuje przechowywanie, szyfruje dane, synchronizuje je między programistami i CI/CD, a także automatycznie sprawdza ważność i terminy wygaśnięcia wszystkich podpisów bez udziału człowieka.

Podsumowanie

  • Match — narzędzie Fastlane do zarządzania certyfikatami Code Signing iOS przez zaszyfrowane repozytorium Git jako pojedyncze źródło prawdy.
  • Szyfrowanie oparte na AES-256 i OpenSSL chroni certyfikaty nawet przy publicznym dostępie do repozytorium, a hasło jest ustawiane przez zmienną MATCH_PASSWORD.
  • Match obsługuje cztery typy profili: development, appstore, adhoc i enterprise — każdy dla swojego docelowego scenariusza dystrybucji aplikacji.
  • Konfiguracja odbywa się przez plik Matchfile, w którym podaje się git_url, typ profilu, identyfikatory aplikacji i dane uwierzytelniające Apple Developer.
  • Integracja z CI/CD przez flagę --readonly pozwala automatycznie pobierać certyfikaty w pipeline'ach bez ryzyka zmiany repozytorium i konfliktów.
  • W przypadku problemów używa się komendy nuke do całkowitego czyszczenia repozytorium lub --force do wymuszonego odnowienia certyfikatów i profili.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również