Apple Certificate to cyfrowy dokument wydany przez Apple Developer Portal do podpisywania kodu aplikacji na iOS, iPadOS, macOS, tvOS i watchOS. Według Apple Developer Support, 2026, certyfikaty są częścią infrastruktury klucza publicznego (PKI) i są niezbędne do potwierdzenia tożsamości dewelopera. W artykule omówimy rodzaje certyfikatów, proces ich tworzenia i zarządzania.
Najważniejsze
Apple Certificate to certyfikat kryptograficzny w formacie X.509 wydany przez centrum certyfikacji Apple (Apple Certificate Authority). Potwierdza on, że jego właściciel jest zarejestrowanym uczestnikiem Apple Developer Program i ma prawo do podpisywania aplikacji dla ekosystemu Apple. Certyfikat składa się z klucza publicznego, metadanych właściciela i podpisu cyfrowego Apple CA — każdy może zweryfikować autentyczność certyfikatu, używając głównego certyfikatu Apple wbudowanego w system operacyjny.
Architektura PKI Apple obejmuje trzy poziomy: główny certyfikat Apple (Apple Root CA), pośredni certyfikat (Apple Worldwide Developer Relations CA) i certyfikat dewelopera. Apple Worldwide Developer Relations CA podpisuje wszystkie certyfikaty deweloperów — jeśli tego pośredniego certyfikatu brakuje w łańcuchu zaufania, podpis kodu jest uznawany za nieważny. Główne certyfikaty Apple są aktualizowane automatycznie przez mechanizm Apple Trust Store wbudowany w iOS i macOS.
Każdy certyfikat ma okres ważności — od jednego roku do trzech lat, w zależności od typu. Apple Developer Program automatycznie powiadamia dewelopera na 30 dni przed wygaśnięciem certyfikatu przez e-mail i powiadomienia push. Po wygaśnięciu stary certyfikat nie może być używany do podpisywania nowych buildów — należy wydać nowy, przy czym aplikacje podpisane wygasłym certyfikatem nadal działają na urządzeniach użytkowników.
Łańcuch zaufania gwarantuje, że certyfikat dewelopera został rzeczywiście wydany przez Apple. iOS sprawdza: główny certyfikat Apple Root CA (wbudowany w oprogramowanie), pośredni certyfikat Apple Worldwide Developer Relations CA, certyfikat dewelopera. Jeśli którykolwiek element łańcucha brakuje lub jest nieważny, iOS blokuje uruchomienie aplikacji z błędem code signing. macOS udostępnia narzędzie security do sprawdzania łańcucha zaufania dowolnego certyfikatu w pęku kluczy.
Proces podpisywania kodu przy użyciu Apple Certificate opiera się na kryptografii asymetrycznej. Klucz prywatny (private key) jest przechowywany na komputerze dewelopera w Keychain, a klucz publiczny (public key) jest zawarty w certyfikacie i wysyłany do Apple Developer Portal. Gdy Xcode podpisuje aplikację, tworzy skrót (hash) pliku binarnego i szyfruje go kluczem prywatnym — to jest podpis cyfrowy. Urządzenie odszyfrowuje podpis kluczem publicznym z certyfikatu i porównuje z obliczonym hashem.
Apple używa algorytmu ECDSA (Elliptic Curve Digital Signature Algorithm) z krzywą P-256 dla wszystkich certyfikatów wydanych po 2021 roku. Wcześniej używano RSA-2048. Przejście na ECDSA zwiększyło szybkość weryfikacji podpisu na urządzeniach i zmniejszyło rozmiar podpisu — dla aplikacji mobilnych jest to szczególnie ważne, ponieważ weryfikacja podpisu jest wykonywana przy każdym uruchomieniu. Według Apple Security Engineering (2025), ECDSA P-256 zapewnia równoważny poziom bezpieczeństwa jak RSA-2048 przy znacznie mniejszych kosztach obliczeniowych.
Dla procesów CI/CD certyfikat wraz z kluczem prywatnym należy wyeksportować do PKCS12 (.p12) i przechowywać w chronionym magazynie. GitHub Actions, Bitrise, Jenkins i inne systemy CI obsługują import certyfikatów przez zmienne środowiskowe lub sekrety. Po imporcie na agencie CI certyfikat jest tymczasowo dodawany do pęku kluczy, używany do podpisu i usuwany. Fastlane Match automatyzuje ten proces, synchronizując certyfikaty między deweloperami za pomocą zaszyfrowanego repozytorium git.
Development certyfikat umożliwia podpisywanie aplikacji do uruchamiania na fizycznych urządzeniach dewelopera. Do jego uzyskania wystarczy darmowe konto Apple ID — Xcode może wygenerować Development certyfikat automatycznie. Distribution certyfikat jest wydawany tylko dla płatnych kont Apple Developer Program ($99/rok) i jest wymagany do wysyłania aplikacji do App Store, dystrybucji Ad Hoc lub Enterprise. Jedno konto może mieć wiele Distribution certyfikatów — na przykład osobny dla każdej aplikacji lub dla różnych zespołów.
Apple Developer Portal udostępnia kilka typów certyfikatów, z których każdy jest przeznaczony do określonego zadania. iOS App Development — podstawowy certyfikat do podpisywania aplikacji na etapie tworzenia. Apple Distribution — główny certyfikat do publikacji w App Store. Mac Development i Mac Distribution — odpowiedniki dla aplikacji macOS. Dla każdego typu certyfikatu istnieje oddzielne żądanie (CSR) w Apple Developer Portal.
Osobną kategorię stanowią certyfikaty do powiadomień push. Apple Push Notification service (APNs) wymaga albo osobnego certyfikatu SSL, albo użycia tokenów uwierzytelniających (APNs Auth Key). Certyfikaty SSL APNs są wydawane osobno dla środowisk Development (Sandbox) i Production oraz są przypisane do konkretnego App ID. APNs Auth Key — nowsze podejście: jeden klucz (.p8) obsługuje wszystkie aplikacje konta, co upraszcza zarządzanie.
| Typ certyfikatu | Przeznaczenie | Okres ważności |
|---|---|---|
| iOS App Development | Podpis do testowania na urządzeniach | 1 rok |
| Apple Distribution | Publikacja w App Store i Ad Hoc | 1 rok |
| Mac Development | Podpis aplikacji macOS do tworzenia | 1 rok |
| Mac Distribution | Publikacja w Mac App Store | 1 rok |
| APNs SSL (Sandbox) | Powiadomienia push w środowisku testowym | 1-3 lata |
| APNs SSL (Production) | Powiadomienia push w produkcji | 1-3 lata |
Tworzenie Apple Certificate rozpoczyna się od wygenerowania żądania podpisania certyfikatu (Certificate Signing Request, CSR) przez Keychain Access na macOS. Keychain Access tworzy parę kluczy: klucz prywatny pozostaje w pęku, a CSR jest wysyłany do Apple Developer Portal. Po weryfikacji tożsamości Apple podpisuje CSR i wydaje gotowy certyfikat (.cer), który należy pobrać i zainstalować podwójnym kliknięciem.
Do zarządzania wieloma projektami i zespołami Apple udostępnia możliwość tworzenia certyfikatów dla różnych Team ID. Jeden deweloper może być członkiem wielu zespołów (przez Apple Developer Program — App Store Connect), a dla każdego zespołu wydawane są oddzielne certyfikaty. Xcode automatycznie przełącza certyfikaty w zależności od wybranego zespołu w ustawieniach Signing & Capabilities.
Rewokacja (unieważnienie) certyfikatu to krytyczna operacja: wszystkie aplikacje podpisane tym certyfikatem przestają być instalowane na nowych urządzeniach (już zainstalowane nadal działają). Apple Developer Portal umożliwia unieważnienie dowolnego certyfikatu w sekcji Certificates. Przyczyny rewokacji: kompromitacja klucza prywatnego, zwolnienie dewelopera z zespołu, naruszenie warunków Apple Developer Program. Po rewokacji należy wydać nowy certyfikat i ponownie podpisać wszystkie aktywne buildy.
Keychain (pęk kluczy) — systemowe przechowywanie macOS dla certyfikatów, kluczy prywatnych i haseł. Wszystkie certyfikaty Apple i odpowiadające im klucze prywatne są przechowywane w pęku logowania (login.keychain) użytkownika. Xcode odwołuje się do Keychain przy podpisywaniu kodu, automatycznie wybierając odpowiedni certyfikat według typu kompilacji. Do diagnozowania problemów z podpisem wygodnie jest użyć wbudowanego narzędzia Keychain Access (folder /Applications/Utilities).
Eksport certyfikatu dla CI/CD wykonuje się przez Keychain Access: wybierz certyfikat i odpowiadający mu klucz prywatny (powinny być rozwinięte w jednym wierszu), kliknij prawym przyciskiem i wybierz Export. Format — PKCS12 (.p12). Przy eksporcie Keychain poprosi o hasło ochrony pliku — to hasło będzie potrzebne przy imporcie na serwerze CI. Bez klucza prywatnego wyeksportowany certyfikat jest bezużyteczny do podpisywania — może być używany tylko do weryfikacji już podpisanego kodu.
Przykładowe polecenie do importu certyfikatu do pęku kluczy agenta CI przy użyciu narzędzia security:
# Tworzenie tymczasowego pęku kluczy
security create-keychain -p "temp" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "temp" build.keychain
# Import certyfikatu z .p12
security import certificate.p12 -k build.keychain \
-P "${P12_PASSWORD}" -T /usr/bin/codesign
# Konfiguracja polityki podpisywania
security set-key-partition-list -S apple: -s \
-k "temp" build.keychain
Security create-keychain tworzy tymczasowy pęk kluczy, izolowany od użytkownika. Jest to ważne dla CI, aby nie zanieczyszczać systemowego pęku kluczy agenta. Flaga -T /usr/bin/codesign zezwala narzędziu codesign na dostęp do kluczy bez pytania o hasło — w przeciwnym razie automatyczne podpisywanie w pipeline przerwie się oknem dialogowym. Polecenie set-key-partition-list jest niezbędne do zgodności z wymaganiami macOS dotyczącymi podpisywania kodu w trybie automatycznym.
Najczęstszym błędem jest „No signing certificate found” podczas kompilacji w Xcode. Występuje, gdy w Keychain brakuje certyfikatu z kluczem prywatnym odpowiadającego wybranemu typowi kompilacji. Rozwiązanie: sprawdź Keychain Access pod kątem obecności certyfikatu, pobierz go z Apple Developer Portal i zainstaluj. Jeśli klucz prywatny został utracony (stary komputer, reinstalacja systemu), należy unieważnić stary certyfikat i wydać nowy.
Błąd „Valid signing certificate not found” w CI/CD występuje, gdy na agencie nie są zainstalowane pośrednie certyfikaty Apple (Apple Worldwide Developer Relations CA). Apple dołącza pośrednie certyfikaty do łańcucha przy pobieraniu certyfikatu dewelopera, ale przy ręcznym eksporcie .p12 mogą ich brakować. Rozwiązanie — pobierz pośrednie certyfikaty ze strony Apple Certificate Authority i zainstaluj je w pęku kluczy agenta CI.
Problem z wygasłym certyfikatem objawia się błędem „This certificate has an invalid issuer” podczas podpisywania. Apple Developer Portal pokazuje status każdego certyfikatu i datę wygaśnięcia. Jeśli aplikacja została już opublikowana w App Store z wygasłym certyfikatem, nadal działa — App Store używa własnego certyfikatu Apple do dystrybucji. Jednak do przesłania nowego builda wymagany jest ważny Distribution certyfikat. Fastlane zawiera polecenie cert do automatycznego tworzenia i odnawiania certyfikatów.
Często zadawane pytania
Nie, dla iOS i macOS wydawane są różne typy certyfikatów — iOS App Development i Mac Development. Apple Distribution certyfikat również jest podzielony według platform. Podczas tworzenia certyfikatu w Apple Developer Portal należy określić docelową platformę — uniwersalny certyfikat dla wszystkich platform nie istnieje.
Należy unieważnić stary certyfikat w Apple Developer Portal przez Certificates, Identifiers & Profiles. Następnie utworzyć nowy CSR przez Keychain Access i wydać nowy certyfikat. Wszystkie aplikacje podpisane starym certyfikatem będą wymagać ponownego podpisania i ponownego przesłania do App Store, jeśli trzeba wydać aktualizację.
Dla jednego konta Apple Developer Program dozwolone są nie więcej niż dwa certyfikaty Distribution i nieograniczona liczba certyfikatów Development jednocześnie. Enterprise konta mają oddzielne limity. Jeśli osiągnięto limit certyfikatów Distribution, należy unieważnić jeden z istniejących przed utworzeniem nowego.
Użyj narzędzia security: security find-identity -v -p basic wyświetli wszystkie certyfikaty w pęku kluczy z datami wygaśnięcia. Dla konkretnego certyfikatu podaj jego skrót SHA-1: security find-certificate -c „Developer” -p | openssl x509 -noout -enddate.
Tak, certyfikaty są przypisane do konkretnego konta Apple Developer (Team ID). Przy zmianie konta stare certyfikaty stają się nieważne dla nowego Team ID. Xcode przy zmianie konta w Accounts Preferences automatycznie prosi o utworzenie nowych certyfikatów dla nowego zespołu.
Podsumowanie
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.
Przeczytaj również