iOSAppleXcodeApp StoreCode Signing

Apple Distribution証明書の作成手順まとめ

Sloth255
Sloth255
·7 min read·1,571 words

App StoreにiOSアプリを配布するためには、Apple Distribution証明書が必須です。この証明書はアプリへのコード署名に使われ、Apple側が「このアプリは正規の開発者が作ったもの」だと検証するための仕組みです。

本記事では、Apple Developer Programのダッシュボードを使って証明書を一から作成する手順を丁寧に解説します。


事前準備

証明書を作成する前に、以下を確認してください。

  • Apple Developer Program に加入済み(年間 $99 USD)
  • Admin または Account Holder の権限を持つ Apple ID でログイン済み
  • Mac に Xcode(最新版推奨)がインストール済み
  • キーチェーンアクセス(macOS 標準アプリ)が使用可能

Step 1 — CSR(証明書署名要求)ファイルを作成する

CSR(Certificate Signing Request)は、Apple に証明書を要求するためのファイルです。キーチェーンアクセスを使って作成します。

  1. キーチェーンアクセス を開く(Spotlight で「キーチェーン」と検索)
  2. メニューバーの キーチェーンアクセス証明書アシスタント認証局に証明書を要求... をクリック

キーチェーンアクセスの証明書アシスタント画面

  1. 以下を入力する

    項目 入力内容
    ユーザーのメールアドレス Apple ID に登録したメールアドレス
    通称 わかりやすい名前(例:MyApp Distribution
    CA のメールアドレス 空欄でOK
    要求の処理 「ディスクに保存」 を選択

CSR の保存先を指定する画面

  1. 「続ける」をクリックし、CSR ファイル(.certSigningRequest)を任意の場所に保存する

Step 2 — Apple Developer Program で証明書を新規作成する

Apple Developer の Web サイトにアクセスして証明書を発行します。

アクセス先:
developer.apple.com › Account › Certificates, IDs & Profiles › Certificates

  1. 右上の +(追加)ボタン をクリック
    Apple Developer の Certificates 一覧画面

  2. Software セクションから Apple Distribution を選択し「Continue」
    Apple Distribution を選択する画面

  3. 「Upload a Certificate Signing Request」の画面で、Step 1 で作成した .certSigningRequest ファイルをアップロード

  4. 「Continue」→「Download」で証明書ファイル(.cer)をダウンロード
    証明書ファイルをダウンロードする画面


Step 3 — 証明書をダウンロードしてキーチェーンにインストールする

  1. ダウンロードした distribution.cerダブルクリック
  2. 「キーチェーンに追加しますか?」のダイアログが出たら「追加」をクリック
  3. キーチェーンアクセスを開き、ログイン キーチェーンの「証明書」カテゴリを確認
  4. Apple Distribution: [Your Name/Team] (XXXXXXXXXX) が表示されれば成功です

証明書の左側にある ▶ 展開ボタン を押したとき、秘密鍵(🔑)が表示されることを確認してください。秘密鍵が見えない場合は、CSR を生成した Mac が異なるか、現在の Mac のキーチェーンに秘密鍵が存在していません。


Step 4 — Xcode で証明書が認識されているか確認する

確認場所:
Xcode › Settings... › Accounts › Manage Certificates...

  1. 対象の Apple ID を選択し、「Manage Certificates...」をクリック
  2. Apple Distribution の項目が一覧に表示されていることを確認
  3. プロジェクトの Signing & Capabilities タブで Automatically manage signing をオフにすると、Distribution 証明書を手動選択できます

証明書とプロビジョニングプロファイルの関係

Apple の署名まわりは、次の 3 要素で成り立っています。

  • 証明書(Certificate):このアプリに署名する開発者・チームを証明するもの
  • App ID:どのアプリかを識別するもの
  • プロビジョニングプロファイル(Provisioning Profile):どの証明書・App ID・デバイス・機能の組み合わせで実行や配布を許可するかを定義するもの

ざっくり言うと、証明書が署名者App ID がアプリの識別子プロビジョニングプロファイルが利用条件のセットです。証明書だけ作成してもアプリは配布できず、配布方法に合ったプロビジョニングプロファイルが必要です。


Apple Development 証明書との違い

iOSの開発では、用途に応じて 2 種類の証明書を使い分けます。ここでは、証明書そのものの性質に絞って違いを整理します。

項目 Apple Development Apple Distribution
所有者 個人(Mac 名が証明書名に付加) チーム(Account Holder / Admin のみ作成可)
複数 Mac での利用 ✅ 可能(個人所有。自分の別 Mac へ .p12 で移行) ✅ 可能(チーム共有可。.p12 エクスポートで共有)
用途 実機デバッグ・テスト App Store / Ad Hoc 配布
TestFlight 配信 ❌ 不可 ✅ 可能
Xcode の signing Debug スキームで使用 Release スキームで使用
最大発行枚数 2枚 / チーム 3枚 / チーム
有効期間 1年間 1年間

開発中は Apple Development 証明書でビルド・デバッグを行い、リリース時に Apple Distribution 証明書でアーカイブ・署名するのが一般的な流れです。


Apple Development 証明書と個人アカウントの違い

ここで混同しやすいのが、Apple Development 証明書 と、無料の Apple Account で使う Personal Team です。これは同じ意味ではありません。

  • Apple Development 証明書:Apple Developer Program に加入したチームで使う、正式な開発用証明書
  • Personal Team:Apple Developer Program 未加入でも、Xcode から無料で実機テストできる開発用ワークフロー

主な違いは次のとおりです。

項目 Personal Team(無料アカウント) Apple Development(Developer Program 加入)
利用条件 Apple Account のみで可 Apple Developer Program 加入が必要
主な用途 個人利用の実機テスト チーム開発・継続的な開発用署名
配布 ❌ 不可 ❌ 開発用のため不可
TestFlight / App Store Connect ❌ 不可 ❌ 不可
プロファイル有効期限 7日 通常 1年
登録できる App ID / デバイス 制限あり Developer Program の範囲で利用可能
高度な機能・サービス 制限あり 利用可能な機能が増える

無料アカウントの Personal Team は、学習用・個人検証用には便利です。App Store 配布、TestFlight、Ad Hoc 配布、継続的なチーム開発を行う場合は、Apple Developer Program に加入して Apple Development / Apple Distribution 証明書を使う前提になります。


配布方法ごとの対応表

配布方法 証明書 プロビジョニングプロファイル 補足
実機デバッグ Apple Development Development 登録済みデバイスでのみ実行可能
TestFlight Apple Distribution App Store Connect 用 Distribution App Store Connect にアップロードして配信
App Store 公開 Apple Distribution App Store Connect 用 Distribution 審査通過後に一般公開
Ad Hoc 配布 Apple Distribution Ad Hoc UDID 登録済みデバイスに限定
Enterprise / In-House 配布 Apple Enterprise Distribution In-House Apple Developer Enterprise Program が必要

迷いやすいポイントは、TestFlight も App Store 公開も Apple Distribution 証明書を使うことです。Apple Development 証明書は開発用であり、App Store Connect へのアップロードには使えません。


Automatic signing と manual signing の使い分け

通常は、Xcode の Automatically manage signing を有効にする運用をおすすめします。Xcode が Development / Distribution の署名アセットやプロビジョニングプロファイルを自動で管理してくれるため、個人開発や小規模チームでは最も安全です。

一方で、次のような場合は manual signing を検討します。

  • 複数ターゲットや複数 Bundle Identifier を厳密に管理したい
  • CI/CD で署名アセットを明示的に管理したい
  • Fastlane Match などで証明書とプロファイルを一元管理したい
  • Xcode の自動生成プロファイルでは意図どおりに制御できない

判断に迷ったら、まずは Automatic signing で始めて、CI 導入やチーム開発の複雑化に合わせて manual signing に移行するのが現実的です。


よくあるエラーと対処法

🔴「証明書に秘密鍵がない」と表示される

以下のいずれかのタイミングで発生します。

  • 別の Mac に .cer をインストールしたとき:CSR を生成した Mac にのみ秘密鍵が存在するため
  • Mac を移行・買い替えたとき:移行アシスタントで証明書は引き継がれても、キーチェーン内の秘密鍵が正しく移動されなかった場合
  • キーチェーンをリセット・修復したとき:同一 Mac でもキーチェーンが初期化されると秘密鍵が失われる
  • Apple Developer ポータルで .cer を再ダウンロードしたとき:CSR を生成した Mac とは別の Mac でダウンロードした場合

いずれの場合も、CSR を生成した元の Mac から .p12 形式でエクスポートし、現在の Mac にインポートしてください。元の Mac が手元にない・キーチェーンが壊れた場合は、証明書を失効させて新しい CSR で再発行が必要です。

# .p12 のエクスポート手順(キーチェーンアクセス)
# 1. キーチェーンアクセスを開く
# 2. 対象の証明書を右クリック
#    → 「"Apple Distribution: ..."を書き出す...」を選択
# 3. パスワードを設定して .p12 ファイルを保存
# 4. 別の Mac でダブルクリックしてインポート

🔴 証明書の有効期限切れ

Apple Distribution 証明書の有効期間は 1年間 です。期限切れの場合は、同じ手順で新しい証明書を再発行してください。古い証明書はアーカイブ済みビルドの検証には引き続き使えます。

期限切れが近づいたら、次の順で更新するとトラブルを避けやすくなります。

  1. 新しい Apple Distribution 証明書を作成する
  2. 必要に応じて Distribution 用のプロビジョニングプロファイルを再生成する
  3. Xcode や CI/CD で使っている証明書・プロファイルを更新する
  4. チームで共有している場合は、新しい .p12 を必要な Mac に再配布する

特に CI を使っている場合は、ローカル Mac だけ更新してもビルドが復旧しません。証明書を保管している場所と利用箇所をまとめて洗い出してから差し替えるのが安全です。

🔴「Maximum number of certificates generated」エラー

Apple Developer Program では、Distribution 証明書は 最大3枚 まで発行できます。不要な証明書を削除してから再作成してください。


まとめ

本記事で解説した作業フローを振り返ります。

  1. キーチェーンアクセス で CSR(.certSigningRequest)を生成
  2. developer.apple.comApple Distribution 証明書を新規作成し CSR をアップロード
  3. ダウンロードした .cer をダブルクリックでキーチェーンにインストールする
  4. Xcode の Accounts 設定 で証明書が認識されているか確認

証明書の管理は最初は複雑に感じますが、一度手順を覚えてしまえばスムーズに行えます。チーム開発の場合は .p12 の安全な共有方法や、Fastlane Match などのツールによる自動化も検討してみてください。


参考リンク(Apple 公式)