Apple Certificate — 定義、種類と仕組み

著者: IT Sectr 公開日: 2026-04-16 読了時間: 9 分

Apple Certificateは、Apple Developer PortalがiOS、iPadOS、macOS、tvOS、watchOS向けアプリケーションのコード署名用に発行するデジタル文書です。Apple Developer Support, 2026によると、証明書は公開鍵基盤(PKI)の一部であり、デベロッパーの身元を確認するために必要です。この記事では証明書の種類、作成および管理のプロセスについて解説します。

重要なポイント

  • Apple Certificate — コード署名時にデベロッパーの身元を確認するデジタル証明書
  • Development証明書は開発中に物理デバイスでアプリケーションを実行できるようにします
  • Distribution証明書はApp Storeへの公開またはAd Hoc配布に必要です
  • Push Notification証明書はAPNsとの接続に署名し、通知を配信するために使用されます
  • 証明書の秘密鍵はデベロッパーのKeychainに保存され、第三者と共有してはいけません

Apple Certificateとは

Apple Certificateは、Apple Certificate Authorityが発行するX.509形式の暗号証明書です。これは、所有者がApple Developer Programの登録メンバーであり、Appleエコシステム向けのアプリケーションに署名する権利があることを確認します。証明書は公開鍵、所有者のメタデータ、Apple CAのデジタル署名で構成され、誰でもオペレーティングシステムに組み込まれたAppleルート証明書を使用して証明書の信頼性を検証できます。

AppleのPKIアーキテクチャには3つのレベルがあります: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の信頼チェーン

信頼チェーンは、デベロッパー証明書が実際にAppleによって発行されたことを保証します。iOSは以下を検証します:Apple Root CA証明書(ファームウェアに組み込み)、中間のApple Worldwide Developer Relations CA証明書、デベロッパー証明書。チェーンのいずれかの要素が欠落しているか無効な場合、iOSはコード署名エラーでアプリの起動をブロックします。macOSは、キーチェーン内の任意の証明書の信頼チェーンを確認するためのsecurityユーティリティを提供します。

Apple証明書の仕組み

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証明書とDistribution証明書の違い

Development証明書は、デベロッパーの物理デバイスで実行するためのアプリケーションに署名できます。取得するには無料のApple IDアカウントで十分です — XcodeはDevelopment証明書を自動的に生成できます。Distribution証明書は、有料のApple Developer Programアカウント($99/年)に対してのみ発行され、App Storeへのアプリ提出、Ad Hoc配布、またはEnterprise配布に必要です。1つのアカウントで複数のDistribution証明書を持つことができます — たとえば、アプリケーションごとや異なるチームごとに個別のものを使用できます。

Apple Certificateの種類

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はより現代的なアプローチです:1つのキー(.p8)がアカウントのすべてのアプリケーションにサービスを提供し、管理を簡素化します。

証明書の種類目的有効期間
iOS App Developmentデバイスでのテスト用署名1年
Apple DistributionApp StoreおよびAd Hoc公開1年
Mac Development開発用macOSアプリ署名1年
Mac DistributionMac 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用の証明書を作成する機能を提供しています。1人のデベロッパーが複数のチームのメンバーになることができ(Apple Developer Program — App Store Connectを通じて)、各チームに対して個別の証明書が発行されます。Xcodeは、Signing & Capabilities設定で選択されたチームに基づいて証明書を自動的に切り替えます。

証明書の失効は重要な操作です:この証明書で署名されたすべてのアプリケーションは新しいデバイスへのインストールが停止されます(既にインストールされたものは引き続き動作します)。Apple Developer PortalではCertificatesセクションで任意の証明書を失効できます。失効の理由:秘密鍵の漏洩、デベロッパーのチーム離脱、Apple Developer Program条件の違反。失効後は、新しい証明書を発行し、すべてのアクティブなビルドに再署名する必要があります。

Keychainと証明書のエクスポート

Keychain(キーチェーン)は、証明書、秘密鍵、パスワードを保存するmacOSのシステムストレージです。すべてのApple証明書と対応する秘密鍵は、ユーザーのログインキーチェーン(login.keychain)に保存されます。Xcodeはコード署名時にKeychainにアクセスし、ビルドタイプに基づいて適切な証明書を自動的に選択します。署名の問題を診断するには、組み込みのKeychain Accessユーティリティ(/Applications/Utilitiesフォルダ)が便利です。

CI/CD用の証明書のエクスポートはKeychain Accessを介して行います:証明書と対応する秘密鍵を選択し(1行に展開されている必要があります)、右クリックしてExportを選択します。形式はPKCS12(.p12)です。エクスポート中、Keychainはファイルを保護するためのパスワードを要求します — このパスワードはCIサーバーでのインポート時に必要になります。秘密鍵がない場合、エクスポートされた証明書は署名に使用できません — 既に署名されたコードの検証にのみ使用できます。

CI/CDでの証明書のインポート

securityユーティリティを使用してCIエージェントのキーチェーンに証明書をインポートするコマンド例:

bash
# 一時キーチェーンの作成
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のWebサイトから中間証明書をダウンロードし、CIエージェントのキーチェーンにインストールします。

期限切れ証明書の問題は、署名時に“This certificate has an invalid issuer”というエラーとして現れます。Apple Developer Portalは各証明書のステータスと有効期限を表示します。期限切れの証明書でアプリケーションが既にApp Storeで公開されている場合、引き続き動作します — App Storeは配布にApple自身の証明書を使用します。ただし、新しいビルドをアップロードするには有効なDistribution証明書が必要です。Fastlaneには、証明書を自動的に作成および更新するためのcertコマンドが含まれています。

よくある質問

1つのApple CertificateをiOSアプリとmacOSアプリの両方で使用できますか?

いいえ、iOSとmacOSでは異なる種類の証明書が発行されます — iOS App DevelopmentとMac Developmentです。Apple Distribution証明書もプラットフォームごとに分かれています。Apple Developer Portalで証明書を作成する際は、対象プラットフォームを指定する必要があります — すべてのプラットフォームに対応する汎用証明書は存在しません。

証明書の秘密鍵を紛失した場合はどうすればよいですか?

Certificates, Identifiers & Profilesを通じてApple Developer Portalで古い証明書を失効させる必要があります。次に、Keychain Accessを介して新しいCSRを作成し、新しい証明書を発行します。古い証明書で署名されたすべてのアプリケーションは、アップデートをリリースする必要がある場合、再署名してApp Storeに再アップロードする必要があります。

1つのApple Developerアカウントでいくつの証明書を使用できますか?

1つのApple Developer Programアカウントでは、同時に最大2つのDistribution証明書と無制限のDevelopment証明書が許可されています。Enterpriseアカウントには別の制限があります。Distribution証明書の上限に達した場合は、新しいものを作成する前に既存の証明書の1つを失効させる必要があります。

コマンドラインから証明書の有効期限を確認するには?

securityユーティリティを使用します:security find-identity -v -p basicは、有効期限付きでキーチェーン内のすべての証明書を一覧表示します。特定の証明書の場合は、そのSHA-1ハッシュを指定します:security find-certificate -c “Developer” -p | openssl x509 -noout -enddate。

Apple IDアカウントの変更は既存の証明書に影響しますか?

はい、証明書は特定のApple Developerアカウント(Team ID)に紐付けられています。アカウントを変更すると、古い証明書は新しいTeam IDでは無効になります。Xcodeは、Accounts Preferencesでアカウントを変更すると、新しいチーム用の新しい証明書の作成を自動的に要求します。

まとめ

  • Apple Certificate — コード署名時にデベロッパーの身元を確認するためにApple CAが発行するX.509デジタル証明書
  • Development証明書はApp Storeに公開せずに物理デバイスでアプリケーションを実行できるようにします
  • Distribution証明書はApp Storeへのアプリ提出とAd Hoc配布に必要です
  • APNs証明書またはトークンはAppleサーバーを介したプッシュ通知の配信に必要です
  • 秘密鍵はデベロッパーのKeychainに保存され、紛失すると復元できません — 証明書の失効が必要
  • PKCS12エクスポートは、コンピュータ間およびCI/CDシステムへの証明書転送に使用されます
  • Appleの信頼チェーンにはルート、中間、デベロッパー証明書が含まれます — いずれかのリンクが切れると署名がブロックされます

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください