Apple Certificate는 Apple Developer Portal에서 iOS, iPadOS, macOS, tvOS, watchOS용 애플리케이션의 코드 서명을 위해 발급하는 디지털 문서입니다. Apple Developer Support, 2026에 따르면 인증서는 공개 키 인프라(PKI)의 일부이며 개발자 신원 확인에 필요합니다. 이 글에서는 인증서 유형, 생성 및 관리 프로세스를 다룹니다.
핵심 사항
Apple Certificate는 Apple 인증 기관(Apple Certificate Authority)에서 발급하는 X.509 형식의 암호화 인증서입니다. 소유자가 Apple Developer Program의 등록된 회원이며 Apple 생태계용 애플리케이션에 서명할 권리가 있음을 확인합니다. 인증서는 공개 키, 소유자 메타데이터 및 Apple CA의 디지털 서명으로 구성되며, 누구나 운영 체제에 내장된 Apple 루트 인증서를 사용하여 인증서의 진위를 확인할 수 있습니다.
Apple의 PKI 아키텍처는 세 가지 수준으로 구성됩니다: Apple Root CA, 중간 인증서(Apple Worldwide Developer Relations CA), 개발자 인증서입니다. Apple Worldwide Developer Relations CA는 모든 개발자 인증서에 서명합니다 — 이 중간 인증서가 신뢰 체인에 없으면 코드 서명이 무효로 간주됩니다. Apple 루트 인증서는 iOS 및 macOS에 내장된 Apple Trust Store 메커니즘을 통해 자동으로 업데이트됩니다.
각 인증서에는 유효 기간이 있습니다 — 유형에 따라 1년에서 3년입니다. Apple Developer Program은 인증서 만료 30일 전에 이메일 및 푸시 알림을 통해 자동으로 개발자에게 알립니다. 만료 후에는 이전 인증서로 새 빌드에 서명할 수 없습니다 — 새 인증서를 발급해야 합니다. 단, 만료된 인증서로 서명된 애플리케이션은 사용자 기기에서 계속 작동합니다.
신뢰 체인은 개발자 인증서가 실제로 Apple에 의해 발급되었음을 보장합니다. iOS는 다음을 확인합니다: Apple Root CA 인증서(펌웨어에 내장), 중간 Apple Worldwide Developer Relations CA 인증서, 개발자 인증서. 체인의 요소가 누락되거나 유효하지 않은 경우 iOS는 코드 서명 오류와 함께 앱 실행을 차단합니다. macOS는 키체인에 있는 모든 인증서의 신뢰 체인을 확인하기 위한 security 유틸리티를 제공합니다.
Apple Certificate를 사용한 코드 서명 프로세스는 비대칭 암호화를 기반으로 합니다. 개인 키는 개발자 컴퓨터의 Keychain에 저장되고, 공개 키는 인증서에 포함되어 Apple Developer Portal로 전송됩니다. Xcode가 애플리케이션에 서명할 때 바이너리 파일의 다이제스트(해시)를 생성하고 개인 키로 암호화합니다 — 이것이 디지털 서명입니다. 기기는 인증서의 공개 키를 사용하여 서명을 해독하고 계산된 해시와 비교합니다.
Apple은 2021년 이후 발급된 모든 인증서에 P-256 곡선을 사용하는 ECDSA(타원 곡선 디지털 서명 알고리즘)를 사용합니다. 이전에는 RSA-2048이 사용되었습니다. ECDSA로의 전환으로 기기에서 서명 확인 속도가 향상되고 서명 크기가 줄어들었습니다 — 이는 모바일 애플리케이션에서 특히 중요하며, 매 실행 시 서명 확인이 수행됩니다. Apple Security Engineering(2025)에 따르면 ECDSA P-256은 훨씬 낮은 계산 비용으로 RSA-2048과 동등한 보안 수준을 제공합니다.
CI/CD 프로세스의 경우 인증서를 개인 키와 함께 PKCS12(.p12)로 내보내고 안전한 저장소에 보관해야 합니다. GitHub Actions, Bitrise, Jenkins 및 기타 CI 시스템은 환경 변수 또는 시크릿을 통한 인증서 가져오기를 지원합니다. CI 에이전트에 가져온 후 인증서는 키체인에 일시적으로 추가되고 서명에 사용된 후 제거됩니다. Fastlane Match는 암호화된 git 저장소를 통해 개발자 간에 인증서를 동기화하여 이 프로세스를 자동화합니다.
Development 인증서는 개발자의 물리적 기기에서 실행할 애플리케이션에 서명할 수 있습니다. 무료 Apple ID 계정으로도 충분히 얻을 수 있습니다 — Xcode가 자동으로 Development 인증서를 생성할 수 있습니다. Distribution 인증서는 유료 Apple Developer Program 계정($99/년)에만 발급되며 App Store에 앱 제출, Ad Hoc 배포 또는 Enterprise 배포에 필요합니다. 하나의 계정에 여러 Distribution 인증서가 있을 수 있습니다 — 예를 들어 각 애플리케이션별로 또는 다른 팀용으로 별도로 사용할 수 있습니다.
Apple Developer Portal은 특정 목적에 맞게 설계된 여러 유형의 인증서를 제공합니다. iOS App Development — 개발 중 애플리케이션 서명용 기본 인증서. Apple Distribution — App Store 게시용 기본 인증서. Mac Development 및 Mac Distribution — macOS 애플리케이션용 대응 인증서. 각 인증서 유형은 Apple Developer Portal에서 별도의 요청(CSR)이 필요합니다.
별도 범주로 푸시 알림용 인증서가 있습니다. Apple Push Notification service(APNs)는 별도의 SSL 인증서 또는 인증 토큰(APNs Auth Key) 사용이 필요합니다. APNs SSL 인증서는 Development(Sandbox) 및 Production 환경에 대해 별도로 발급되며 특정 App ID에 바인딩됩니다. APNs Auth Key는 더 현대적인 접근 방식입니다: 하나의 키(.p8)가 계정의 모든 애플리케이션에 서비스를 제공하여 관리를 단순화합니다.
| 인증서 유형 | 목적 | 유효 기간 |
|---|---|---|
| iOS App Development | 기기 테스트용 서명 | 1년 |
| Apple Distribution | App Store 및 Ad Hoc 게시 | 1년 |
| Mac Development | macOS 앱 개발 서명 | 1년 |
| Mac Distribution | Mac App Store 게시 | 1년 |
| APNs SSL(Sandbox) | 테스트 환경 푸시 알림 | 1-3년 |
| APNs SSL(Production) | 프로덕션 푸시 알림 | 1-3년 |
Apple Certificate 생성은 macOS의 Keychain Access를 통한 인증서 서명 요청(CSR) 생성으로 시작됩니다. Keychain Access는 키 쌍을 생성합니다: 개인 키는 키체인에 남고 CSR은 Apple Developer Portal로 전송됩니다. 신원 확인 후 Apple이 CSR에 서명하고 준비된 인증서(.cer)를 발급하며, 이를 다운로드하여 더블 클릭으로 설치해야 합니다.
여러 프로젝트와 팀을 관리하기 위해 Apple은 다른 Team ID에 대한 인증서 생성 기능을 제공합니다. 한 개발자가 여러 팀의 구성원이 될 수 있으며(Apple Developer Program — App Store Connect를 통해), 각 팀에 대해 별도의 인증서가 발급됩니다. Xcode는 Signing & Capabilities 설정에서 선택한 팀에 따라 인증서를 자동으로 전환합니다.
인증서 폐기는 중요한 작업입니다: 이 인증서로 서명된 모든 애플리케이션은 새 기기에 설치가 중단됩니다(이미 설치된 것은 계속 작동). Apple Developer Portal은 Certificates 섹션에서 모든 인증서를 폐기할 수 있습니다. 폐기 사유: 개인 키 유출, 개발자 팀 이탈, Apple Developer Program 조건 위반. 폐기 후 새 인증서를 발급하고 모든 활성 빌드에 다시 서명해야 합니다.
Keychain(키체인)은 인증서, 개인 키 및 암호를 위한 macOS 시스템 저장소입니다. 모든 Apple 인증서와 해당 개인 키는 사용자의 로그인 키체인(login.keychain)에 저장됩니다. Xcode는 코드 서명 시 Keychain에 액세스하여 빌드 유형에 따라 적절한 인증서를 자동으로 선택합니다. 서명 문제 진단에는 내장된 Keychain Access 유틸리티(/Applications/Utilities 폴더)가 유용합니다.
CI/CD용 인증서 내보내기는 Keychain Access를 통해 수행됩니다: 인증서와 해당 개인 키를 선택하고(한 행에 확장되어야 함) 마우스 오른쪽 버튼을 클릭한 후 Export를 선택합니다. 형식은 PKCS12(.p12)입니다. 내보내기 중 Keychain이 파일 보호를 위한 암호를 요청합니다 — 이 암호는 CI 서버에서 가져올 때 필요합니다. 개인 키 없이 내보낸 인증서는 서명에 쓸모가 없습니다 — 이미 서명된 코드를 확인하는 데만 사용할 수 있습니다.
security 유틸리티를 사용하여 CI 에이전트의 키체인에 인증서를 가져오는 명령 예시:
# 임시 키체인 생성
security create-keychain -p "temp" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "temp" build.keychain
# .p12에서 인증서 가져오기
security import certificate.p12 -k build.keychain \
-P "${P12_PASSWORD}" -T /usr/bin/codesign
# 서명 정책 구성
security set-key-partition-list -S apple: -s \
-k "temp" build.keychain
Security create-keychain은 사용자와 격리된 임시 키체인을 만듭니다. 이는 에이전트의 시스템 키체인을 오염시키지 않기 위해 CI에 중요합니다. -T /usr/bin/codesign 플래그는 codesign 유틸리티가 암호를 묻지 않고 키에 액세스할 수 있도록 합니다 — 그렇지 않으면 파이프라인에서 자동 서명이 대화상자에 의해 중단됩니다. set-key-partition-list 명령은 자동 모드에서 macOS 코드 서명 요구 사항과의 호환성을 위해 필요합니다.
가장 일반적인 오류는 Xcode에서 빌드할 때 “No signing certificate found”입니다. Keychain에 선택한 빌드 유형과 일치하는 개인 키가 있는 인증서가 없을 때 발생합니다. 해결 방법: Keychain Access에서 인증서 존재 여부를 확인하고 Apple Developer Portal에서 다운로드하여 설치합니다. 개인 키를 분실한 경우(이전 컴퓨터, 시스템 재설치) 이전 인증서를 폐기하고 새 인증서를 발급해야 합니다.
CI/CD에서 “Valid signing certificate not found” 오류는 에이전트에 Apple 중간 인증서(Apple Worldwide Developer Relations CA)가 설치되지 않은 경우 발생합니다. Apple은 개발자 인증서 다운로드 시 체인에 중간 인증서를 포함하지만 수동으로 .p12를 내보낼 때 누락될 수 있습니다. 해결 방법 — Apple Certificate Authority 웹사이트에서 중간 인증서를 다운로드하여 CI 에이전트의 키체인에 설치합니다.
만료된 인증서 문제는 서명 시 “This certificate has an invalid issuer” 오류로 나타납니다. Apple Developer Portal은 각 인증서의 상태와 만료 날짜를 표시합니다. 만료된 인증서로 앱이 이미 App Store에 게시된 경우 계속 작동합니다 — App Store는 배포에 자체 Apple 인증서를 사용합니다. 그러나 새 빌드를 업로드하려면 유효한 Distribution 인증서가 필요합니다. Fastlane에는 인증서를 자동으로 생성하고 갱신하기 위한 cert 명령이 포함되어 있습니다.
자주 묻는 질문
아니요, iOS와 macOS에 대해 다른 유형의 인증서가 발급됩니다 — iOS App Development와 Mac Development입니다. Apple Distribution 인증서도 플랫폼별로 구분됩니다. Apple Developer Portal에서 인증서를 생성할 때 대상 플랫폼을 지정해야 합니다 — 모든 플랫폼에 대한 범용 인증서는 존재하지 않습니다.
Certificates, Identifiers & Profiles를 통해 Apple Developer Portal에서 이전 인증서를 폐기해야 합니다. 그런 다음 Keychain Access를 통해 새 CSR을 생성하고 새 인증서를 발급합니다. 이전 인증서로 서명된 모든 애플리케이션은 업데이트를 출시해야 하는 경우 다시 서명하고 App Store에 다시 업로드해야 합니다.
하나의 Apple Developer Program 계정은 동시에 최대 2개의 Distribution 인증서와 무제한의 Development 인증서를 허용합니다. Enterprise 계정에는 별도 제한이 있습니다. Distribution 인증서 한도에 도달한 경우 새로 생성하기 전에 기존 인증서 중 하나를 폐기해야 합니다.
security 유틸리티를 사용하세요: security find-identity -v -p basic은 만료 날짜와 함께 키체인의 모든 인증서를 나열합니다. 특정 인증서의 경우 SHA-1 해시를 지정하세요: security find-certificate -c “Developer” -p | openssl x509 -noout -enddate.
네, 인증서는 특정 Apple Developer 계정(Team ID)에 연결됩니다. 계정을 변경하면 이전 인증서가 새 Team ID에 대해 유효하지 않게 됩니다. Xcode는 Accounts Preferences에서 계정을 변경할 때 새 팀에 대한 새 인증서 생성을 자동으로 요청합니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.