メインコンテンツまでスキップ

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を利用するには、以下の手順が必要。

  1. App Store Connect APIキーの作成 App Store Connectの「Users and Access」セクションから、Admin権限を持つAPIキーを生成する。
  2. APIキーのCI環境への設定 生成したAPIキー(.p8ファイル)、Issuer ID、Key IDをCI環境のシークレットとして登録する。
  3. 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 をログイン

  1. Xcode > Settings(または Preferences) > Accounts タブ
  2. Apple ID を追加(まだなら)
  3. チーム情報が表示されることを確認

3. Xcode プロジェクトで自動署名を有効化

  1. プロジェクトナビゲーターで Runner.xcworkspace を開く
  2. Runner ターゲット > Signing & Capabilities タブ
  3. 以下を確認
    Automatically manage signing(チェック)
    正しい Team(Apple ID) を選択
  4. 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等で自動化可能

まさに「クラウドで管理、ローカルで使用」の仕組みです!

Resource