iOS code署名は2つの部分を使用します。 A 証明書 プロビジョニングプロファイル プロビジョニングプロファイル これらの部分をすべて説明し、開発、ad hoc、TestFlight、App Store、企業向けビルドのために必要な組み合わせを説明し、Macを使用したり使用しなかったりして、それらを作成する方法と、発生するエラーを修正する方法を説明します。
なぜAppleは__CAPGO_KEEP_0__署名を必要とします
iOS code署名は2つの部分を使用します。 A
AppleはiPhoneが実行できるcodeを、Appleが開発者を特定できるものに制限しています。署名はAppleに3つの保証を与えます:
- Identity:特定のApple Developerチームのメンバーによってバイナリが署名されたことを保証します。
- Integrity:署名後、バイナリが変更されていないことを保証します。1バイトでも変更すると署名が破棄されます。
- Authorization:このデバイスにこのアプリケーションをインストールし、特定の特権(プッシュ、iCloud、Sign in with Apple、App Groupsなど)を許可します。
証明書は最初の2つを提供します。プロビジョニングプロファイルは3つ目です。
構成要素
| Piece | 何であるか | ファイル | 所有者は誰ですか |
|---|---|---|---|
| 秘密鍵 | 機械上で生成された鍵 pair の秘密の半分 | Keychain 内 .key / .pem |
あなた自身 |
| CSR | CSR | .certSigningRequest / .csr |
あなたの公開鍵を含む証明書要求 |
| 一時的な | 証明書 | .cer |
あなたのチームに紐付けられたApple署名の公開鍵 |
| Apple が発行し、あなたがダウンロードする | 証明書 + 秘密鍵の組み合わせ | .p12 エクスポート時 |
あなた |
| アプリID | あなたのバンドルIDと有効化された機能 | 開発者ポータル記録 | チーム |
| デバイス | 登録済みのiPhoneまたはiPadのUDID | 開発者ポータル記録 | チーム |
| プロビジョニングプロファイル | iOS証明書とプロビジョニングプロファイルの解説 | .mobileprovision |
チーム |
最もよくある混乱: .cer ファイルは単独では役に立たない。署名には、CSRを作成したプライベートキーが必要です。キーを失った場合、新しい証明書を作成します。
証明書の種類
Apple開発
開発用にXcodeから自分のデバイスでビルドを実行するために使用します。開発証明書は、個々の開発者に属し、Appleはコンピュータ名でラベル付けします。チームの各開発者が自分のものを持つことができます。
Apple配布
アドホック配布、テストフライト、App Storeに署名するために使用します。配布証明書はチームに属し、アカウントホルダーまたは管理者ロールのみが作成できます。Appleはチームが保有できる証明書の数に制限があるため、安全なストアを通じて共有するのではなく、開発者がそれぞれ自分の証明書を作成するのではなく、1つを共有することをお勧めします。
まだ見ることができる iOS開発 そして iOS配布 古いアカウントではあります。 それらはXcode 11以前のタイプです。 Apple DevelopmentとApple DistributionはiOS、iPadOS、macOS、tvOS、watchOS、visionOSを含むすべてのプラットフォームで機能します。
他の証明書タイプ
- 開発者IDアプリケーション/インストーラ: MacアプリをMac App Store以外で配布するために使用します。 iOSには使用されません。
- Apple Push NotificationサービスSSL: 旧式のプッシュ証明書です。 Prefer an APNs認証キー (
.p8)、年次更新なしでチーム内のすべてのアプリに機能します。 それについては、 APNs証明書ガイド. - Apple Payマーチャントアイデンティティ, パスタイプID, ウェブプッシュID:特定のサービス。
プロビジョニングプロファイルの種類
| プロファイルの種類 | 証明書 | デバイス | 使用 |
|---|---|---|---|
| iOSアプリ開発 | Apple開発 | 登録済みデバイスのみ | Xcodeから実行、デバッグ |
| アドホック | Apple Distribution | 登録済みデバイスのみ(1台あたり100台まで、メンバーシップ年ごと) | テスターのデバイスにリリースビルドをインストールするためのリンクまたはファイル |
| App Store Connect | Apple Distribution | Appleの任意のデバイス | TestFlightとApp Store |
| インハウス | 組織内の任意のデバイス | Apple Developer Enterprise Programのみ | プロファイルは |
Enterprise distribution certificate App ID 1つアプリに拡張機能 (ウィジェット、通知サービス拡張機能、共有拡張機能) がある場合、各ターゲットには独自のバンドル ID があり、独自のプロファイルが必要になります。
どの部分がどのように関係しているか
Xcode またはビルド サービスが Capacitor アプリを署名するときにチェックするのは
- ターゲットのバンドル ID (例えば
com.example.app) がプロファイルのアプリ ID と一致していること - 署名に使用されている証明書がプロファイルに記載されている証明書のうちの 1 つであること
- その証明書のプライベート キーがキーチェーンに存在していること
- 開発とアドホック ビルドの場合、デバイスの UDID がプロファイルに記載されていること
- 特権ファイル (プッシュ、関連ドメイン、App グループ) がアプリ ID とプロファイルで許可されている範囲内であること
チェックがすべて成功しない場合、署名エラーが発生し、実行時クラッシュではなく、配信前にエラーが発生するため、良好です。
どの組み合わせが必要ですか?
| 目標 | 証明書 | プロファイル | デバイス登録 |
|---|---|---|---|
| Xcodeから自分のiPhoneで実行 | Apple開発 | iOSアプリ開発 | はい |
| 自分のiPhoneで実行 | Apple開発 | iOSアプリ開発 | はい |
| ベータテストにテストフライトを使用 | Apple Distribution | App Store Connect | No |
| App Storeにリリース | Apple Distribution | App Store Connect | No |
| 内部アプリ | エアカサイストを上にる | エアカサイストを上にる | No |
TestFlightは 同じ 署名を使用します。
App Store。
テストフライトのプロファイルは別々にありません。
アップロードしたビルドをApp Store Connectでテスターに送るかレビューするか、両方にするか決定します。 ios/App/App.xcworkspace 証明書とプロファイルの作成 .xcodeproj Swiftパッケージマネージャーを使用する場合(あなたの Capacitor 8 プロジェクトがSwiftを使用している場合) App Xcodeを開きます。 プロジェクトがSwift Package Managerを使用している場合の8 自動署名管理 とチームを選択してください。 Xcodeは開発証明書を作成し、接続されたデバイスを登録し、プロファイルを生成します。
自動署名はCIで苦痛になることがあります。ビルドマシンはチームアカウントにアクセスし、独自の証明書を作成します。多くのチームはリリースビルド用にマニュアル署名またはAPIキーに基づく署名サービスに切り替えます。
オプション 2: Mac上で手動で作成する
- 開く キーチェーンアクセス > 証明書アシスタント > 証明書機関から証明書を要求. メールアドレスを入力し、 保存. この手順で、キーチェーンにプライベートキーが作成され、
.certSigningRequestファイルが生成されます。 - Apple Developer ポータルに移動し、 証明書、識別子、プロファイル > 証明書 > +、選択 Apple Distribution (または Apple Development) と CSR をアップロードしてください。
- ダウンロードした
.cerをダブルクリックしてください。 Keychain Access はプライベートキーとペア付けします。 - CI 用にエクスポートするには: Keychain Access の下の マイーセルティファケートに右クリックし、 エクスポートを選択し、
.p12で保存してください。パスワードは強く設定してください。
オプション 3:Mac を使用せずに作成する
Linux または Windows で OpenSSL を使用して、フロー全体を実行できます。
# 1. Private key and CSR
openssl genrsa -out ios_distribution.key 2048
openssl req -new -key ios_distribution.key -out ios_distribution.csr \
-subj "/emailAddress=you@example.com/CN=Example Inc/C=US"
# 2. Upload ios_distribution.csr in the Apple Developer portal,
# download the certificate as distribution.cer
# 3. Convert the .cer (DER) to PEM
openssl x509 -in distribution.cer -inform DER -out distribution.pem -outform PEM
# 4. Build the .p12 (signing identity)
openssl pkcs12 -export -inkey ios_distribution.key -in distribution.pem \
-out ios_distribution.p12 -legacy
The -legacy flag は OpenSSL 3 に関する問題です: その場合、 .p12 OpenSSL をインストールしない場合は、iOS 証明書生成ツールが CSR と秘密鍵を生成します。 これらは、鍵を生成する __CAPGO_KEEP_0__ エンドポイントの状態レスから得られ、鍵を保存せずに、コンバーターのみがブラウザで実行されます。 その場合、キーの生成をマシン上で実行する必要がある場合は、上記の OpenSSL コマンドを使用してください。
プロファイルの作成 Identifiers > + CSRとプライベートキーを自動で作成します。 これらは、データを保存しないステートレスなCapgoエンドポイントから来ており、エンドポイントはそれらを保存しません。 .cer to .p12 to
converter
- runsfully
- デバイス > +: 開発とアドホックプロファイルのために、各テスターのUDIDを登録します。テスターは、Macやケーブルなしで電話本体で取得できます。 iOS UDIDファインダープロファイル > +
- : プロファイルのタイプ、App ID、証明書、デバイスを選択します。明確な名前を付け、例えばをダウンロードします。
com.example.app AppStore 2026. - プロファイルを追加した後、デバイスまたは機能を追加する場合は、プロファイルを再生成し、ダウンロードする必要があります。既存のプロファイルは自動的に更新されません。
.mobileprovisionプロファイルの検査
プロファイルは署名されたplistファイルです。macOSでは、次のように読み取ることができます:
A
ファイル .mobileprovision ファイル
security cms -D -i App_Store.mobileprovision > profile.plist
/usr/libexec/PlistBuddy -c "Print :Name" profile.plist
/usr/libexec/PlistBuddy -c "Print :ExpirationDate" profile.plist
/usr/libexec/PlistBuddy -c "Print :Entitlements" profile.plist
/usr/libexec/PlistBuddy -c "Print :ProvisionedDevices" profile.plist
Linux上では openssl smime -inform der -verify -noverify -in App_Store.mobileprovision plistを出力します。
作成された .ipa は次のもので署名されました:
unzip -q App.ipa -d ipa
codesign -dvv ipa/Payload/App.app
codesign -d --entitlements :- ipa/Payload/App.app
有効期限と更新
- 証明書 は1年間有効です。
- プロビジョニングプロファイル は1年間有効です。証明書が有効期限切れまたは削除された場合、有効期限が早く切れることもあります。
- App Storeアプリは 有効期限切れの配布証明書でも動作を続けます。AppleはApp Storeのダウンロードを再署名します。新しいビルドをアップロードするには、新しい証明書が必要です。
- Ad Hocおよび開発用ビルドは実行を停止します プロファイルの有効期限が切れる。テスターはアプリ起動時にクラッシュを経験します。
- テストフライトビルド 有効期限はアップロード後90日となり、証明書とは独立しています。
- エンタープライズアプリは機能を停止します エンタープライズ証明書の有効期限が切れ、または証明書が取り消された場合、すべてのデバイスで機能を停止します。有効期限前に更新してください。
- デバイススロット デバイススロットは毎年1回リセットされます。デバイスを削除しても、そのスロットが次の会員年が始まるまで解放されません。
証明書の有効期限を共有カレンダーに記入してください。 証明書管理ガイド 詳細な監視とローテーションについては、
よくあるエラーと解決策
「iOS Distribution」の署名証明書が見つかりません」というエラーが発生します または 「署名証明書が無効です」:プライベートキーがこのキーチェーンにありません。キーキャッシュをインポートするか、キーを持っていない場合は新しい証明書を作成してください。 .p12「プロビジョニングプロファイルに署名証明書が含まれていません」
:プロファイルが異なる証明書で作成されました。ポータルでプロファイルを編集し、現在の証明書にチェックを入れて再生成しダウンロードしてください。「プロビジョニングプロファイルに現在選択中のデバイスが含まれていません」
:UDIDを登録し、再度プロファイルを生成してください。TestFlightまたはApp Storeの場合必要ありません。「プロビジョニングプロファイルがプッシュ通知の機能をサポートしていません」
:App IDで機能を有効にし、再度プロファイルを生成してください。プロファイルはスナップショットです。「この実行ファイルの有効なプロビジョニングプロファイルが見つかりませんでした」
インストール時:デバイスがアドホックプロファイルに含まれていない、またはプロファイルが期限切れです。 または
アプリがインストールされるとすぐに終了します。: iOS 16 以降では、開発用とアドホック用のビルドにはデバイス上の開発者モードが必要です。詳しくは iOS の開発者モードを有効にする方法.
拡張機能が署名に失敗します。: 各拡張機能のターゲットには独自の App ID とプロファイルが必要です。Signing & Capabilities でチェックするのは App だけではありません。
「無効なパスワード」が Linux で作成した .p12 をインポートしたときに表示される: Linux で作成した .p12 を再構築してください。 openssl pkcs12 -export ... -legacy.
アップロードが拒否されました。SDK バージョン: since April 2026 App Store Connect requires builds made with Xcode 26 and the iOS 26 SDK. Update Xcode or your CI image. Capacitor 8 already requires Xcode 26.
チームのための善行
- チームごとに 1 つの Apple Distribution 証明書を使用し、
.p12をパスワード管理者またはシークレット ストアに保存し、パスワードを別途保存してください。 - メールは絶対に送らない
.p12ファイルやGitにコミットしない - アップロード用にApple IDのパスワードではなく、App Store Connect API キーを使用する
.p8プロファイルの名前はバンドルID、タイプ、年を含める - チームから離れた人の証明書を取り消す
- アプリのバンドルID、拡張機能、機能をすべて書き留める
- __CAPGO_KEEP_0__ アプリ用のクラウド署名
クラウド署名のためのCapacitorアプリ
__CAPGO_KEEP_0__ ビルド Capgo ビルド Capacitor アプリをCapgoのMac上でビルドする .p12 Capgo ビルドはCLIのMac上で実行される。プロファイルとプロファイルの設定を提供してください。クレデンシャルはビルドのみに使用され、Capgo サーバーに保存されません。CLIから一度保存してください:
bunx @capgo/cli@latest build credentials save --appId com.example.app --platform ios
bunx @capgo/cli@latest build request com.example.app --platform ios --path .
The Capgo iOS ドキュメントの作成 リストに、App Store Connect API キーを含む、テストフライトへのアップロードとテスター用ビルドのモードの正確な資格情報のオプションを示します。 ad_hoc 最初のビルドがテストフライトにありますと、JavaScript とアセットの変更をユーザーに送信できます。
__CAPGO_KEEP_0__ ライブアップデート Capgo ライブアップデート Native code の変更と新しい機能は、ストアを通じて署名されたビルドが必要です。
次のステップ
- アカウントを作成する必要がありますか? Apple と Google Play の開発者アカウントを作成する方法.
- テスターにビルドを配布する準備はできましたか? iOS と Android アプリをテスターに配布する方法.
- 提出する? iOSアプリの提出ガイド.