Cloud-managed certificates(クラウド管理対象証明書)
Overview
Apple Reference クラウド管理対象証明書 についてまとめているセクション。
クラウド管理対象証明書(Cloud-managed Certificate)は、Apple Developer Programの「チーム」に関連付けられており、チームのAdminやDeveloper権限を持つメンバーが、XcodeやCI環境(例:GitHub Actions)からApp Store Connect API経由で署名に利用することが可能
クラウド管理対象証明書(Cloud-managed Certificate)はApple が自動的に作成・管理してくれる 開発/配布用の署名証明書。
以下の特徴があります
- 自分で .p12 や .cer ファイルを作成・インポートする必要がない
- 証明書の有効期限の更新も Apple 側で自動対応
- Xcode、Xcode Cloud、App Store Connect API 経由で利用可能
- Fastlane の match や cert では非対応(自動化するには api_key を使う)
従来の証明書のように「物理的なファイル(.p12など)を共有して使い回す」形式ではなく、各自またはCIがAPIキーを通じてAppleのクラウドに署名を依頼する構造。
そのため、「共有される=使い回せる」ではなくチーム内の複数の環境で利用可能な仕組みという理解が正確。
クラウド管理対象証明書の仕組み
【開発者のXcode(ローカル)】
└── Appleに「クラウド証明書を使いたい」とリクエスト
└── Appleのクラウド上で証明書を発行・管理
└── 開発者のXcodeがクラウド経由で署名
【他の開発者のXcode】
└── 同じチームのメンバーであれば、自分のXcodeからクラウド署名を利用可能
└── APIキーやチーム認証が必要
【CI環境(Fastlane, GitHub Actionsなど)】
└── ✅ App Store Connect APIキーを使えばクラウド証明書で署名可能
└── 証明書ファイルの手動管理は不要(ただしAPIキーの設定は必要)
CI環境でのCloud-managed certificatesの利用方法
CI環境でCloud-managed certificatesを利用するには、以下の手順が必要。
- App Store Connect APIキーの作成 App Store Connectの「Users and Access」セクションから、Admin権限を持つAPIキーを生成する。
- APIキーのCI環境への設定 生成したAPIキー(.p8ファイル)、Issuer ID、Key IDをCI環境のシークレットとして登録する。
- Xcodeビルドコマンドでの署名 xcodebuildコマンドを使用してアプリをビルドする際に、以下のオプションを指定する。
xcodebuild -exportArchive \
-archivePath <アーカイブのパス> \
-exportOptionsPlist <ExportOptions.plistのパス> \
-exportPath <出力先のパス> \
-allowProvisioningUpdates \
-authenticationKeyPath <APIキーのパス> \
-authenticationKeyID <Key ID> \
-authenticationKeyIssuerID <Issuer ID>
これにより、Appleのクラウド上で署名が行われ、ローカルで証明書を管理する必要がなくなる。
CI環境での利用にはAPIキーが必須
CI環境では、XcodeのGUIを使用できないためApp Store Connect APIキーを使用して署名を行う必要がある。
チームメンバー間での共有
Cloud-managed certificatesは、Apple Developer Programのチームに関連付けられているが、各開発者が自分のXcode環境で設定する必要がある。
CI/CDツールの対応状況
一部のCI/CDツールでは、Cloud-managed certificatesを直接サポートしていない場合があります。その場合、手動での証明書管理が必要になることがある。
なぜ証明書の実体が「見えない」のか
クラウド管理対象証明書は、従来のようにキーチェーンやApple Developerポータル(Certificates, Identifiers & Profiles)で「確認・ダウンロード」できるファイルとして存在しません。
Appleのクラウド署名インフラ上にのみ存在し、Xcodeやxcodebuildなどのツールが署名処理の際にAppleへ直接リクエストし、クラウド上で署名が実行される仕組みです。
そのため、開発者が証明書の中身を見たり、ファイルとして管理・共有したりすることは想定されていません。
代わりに、APIキーなどを用いた認証情報で「誰が署名できるか」を制御する構造になっています。
Cloud-managed Certificate の作成方法(Xcode 経由)
1. Apple Developer Program に加入していることを確認
Apple ID が有償の開発者アカウント($99/年)に紐づいている必要。
2. Xcode に Apple ID をログイン
- Xcode > Settings(または Preferences) > Accounts タブ
- Apple ID を追加(まだなら)
- チーム情報が表示されることを確認
3. Xcode プロジェクトで自動署名を有効化
- プロジェクトナビゲーターで Runner.xcworkspace を開く
- Runner ターゲット > Signing & Capabilities タブ
- 以下を確認
Automatically manage signing(チェック)
正しい Team(Apple ID) を選択 - Xcode が自動的に Cloud-managed 証明書を生成し、割り当ててくれます。
⚠️ 初回は「No signing certificate found. Xcode will create one for you.」のような表示が出ますが、それでOK。
🧪 実機確認方法 • Mac の「キーチェーンアクセス」で手動インストールされていないことを確認しても、Xcode で署名済みなら OK。 • 実機でビルドして署名できれば、Cloud-managed 証明書が使われています。
🤖 CI(GitHub ActionsやFastlane)で使いたい場合
Cloud-managed Certificates はローカルには存在しないため、Fastlane や GitHub Actions で使うには:
App Store Connect API を使って build_app を呼ぶ
# 以下コードにより、Apple がクラウド管理している証明書で自動的に署名される。
api_key = app_store_connect_api_key(
key_id: ENV["APP_STORE_KEY_ID"],
issuer_id: ENV["APP_STORE_ISSUER_ID"],
key_content: ENV["APP_STORE_API_PRIVATE_KEY"]
)
build_app(
export_method: "ad-hoc",
api_key: api_key
)
🌟 クラウド管理対象証明書の仕組み
証明書の管理場所
- ✅ Apple Developer Portal: 証明書とプロビジョニングプロファイルを管理
- ✅ Xcode: 必要に応じて自動でダウンロード・作成
- ✅ ローカルキーチェーン: 一時的にキャッシュ
今回のキーチェーンアクセス
Apple Development: xxxx
これは:
- 🔄 Xcodeが自動作成: クラウド管理機能で生成
- 📥 ローカルに保存: Macのキーチェーンにダウンロード
- 🔐 署名に使用: アプリのcodesignで利用
🔄 クラウド管理の流れ
1. 証明書作成(自動)
- Xcodeが Apple Developer Portal に証明書作成を要求
- Apple が証明書を生成
- Xcode がローカルにダウンロード
2. プロビジョニングプロファイル(自動)
- 登録済みデバイス + 証明書 + App ID を組み合わせ
- Apple が自動でプロファイル生成
- Xcode が必要時にダウンロード
3. 署名処理(ローカル)
- ローカルキーチェーンの証明書を使用
- codesign でアプリに署名
🎯 メリット
- ✅ 手動作業不要: CSR作成・証明書管理が自動
- ✅ チーム共有: 複数の開発者で同じ証明書使用可能
- ✅ CI/CD対応: GitHub Actions等で自動化可能
まさに「クラウドで管理、ローカルで使用」の仕組みです!