Apple Certificateは、Apple Developer PortalがiOS、iPadOS、macOS、tvOS、watchOS向けアプリケーションのコード署名用に発行するデジタル文書です。Apple Developer Support, 2026によると、証明書は公開鍵基盤(PKI)の一部であり、デベロッパーの身元を確認するために必要です。この記事では証明書の種類、作成および管理のプロセスについて解説します。
重要なポイント
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によって発行されたことを保証します。iOSは以下を検証します:Apple Root CA証明書(ファームウェアに組み込み)、中間のApple Worldwide Developer Relations CA証明書、デベロッパー証明書。チェーンのいずれかの要素が欠落しているか無効な場合、iOSはコード署名エラーでアプリの起動をブロックします。macOSは、キーチェーン内の任意の証明書の信頼チェーンを確認するためのsecurityユーティリティを提供します。
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証明書は、デベロッパーの物理デバイスで実行するためのアプリケーションに署名できます。取得するには無料のApple IDアカウントで十分です — XcodeはDevelopment証明書を自動的に生成できます。Distribution証明書は、有料のApple Developer Programアカウント($99/年)に対してのみ発行され、App Storeへのアプリ提出、Ad Hoc配布、またはEnterprise配布に必要です。1つのアカウントで複数のDistribution証明書を持つことができます — たとえば、アプリケーションごとや異なるチームごとに個別のものを使用できます。
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 Distribution | App StoreおよびAd Hoc公開 | 1年 |
| Mac Development | 開発用macOSアプリ署名 | 1年 |
| Mac Distribution | Mac 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(キーチェーン)は、証明書、秘密鍵、パスワードを保存するmacOSのシステムストレージです。すべてのApple証明書と対応する秘密鍵は、ユーザーのログインキーチェーン(login.keychain)に保存されます。Xcodeはコード署名時にKeychainにアクセスし、ビルドタイプに基づいて適切な証明書を自動的に選択します。署名の問題を診断するには、組み込みのKeychain Accessユーティリティ(/Applications/Utilitiesフォルダ)が便利です。
CI/CD用の証明書のエクスポートはKeychain Accessを介して行います:証明書と対応する秘密鍵を選択し(1行に展開されている必要があります)、右クリックしてExportを選択します。形式はPKCS12(.p12)です。エクスポート中、Keychainはファイルを保護するためのパスワードを要求します — このパスワードはCIサーバーでのインポート時に必要になります。秘密鍵がない場合、エクスポートされた証明書は署名に使用できません — 既に署名されたコードの検証にのみ使用できます。
securityユーティリティを使用してCIエージェントのキーチェーンに証明書をインポートするコマンド例:
# 一時キーチェーンの作成
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コマンドが含まれています。
よくある質問
いいえ、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 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 Developerアカウント(Team ID)に紐付けられています。アカウントを変更すると、古い証明書は新しいTeam IDでは無効になります。Xcodeは、Accounts Preferencesでアカウントを変更すると、新しいチーム用の新しい証明書の作成を自動的に要求します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。