29

プロビジョニングプロファイル、証明書に関する私の理解は正しいですか(開発中)?

  1. アプリは、デバイスにインストールするときにxcodeからの開発者証明書で署名されていますか?証明書はプロビジョニングプロファイル(IPad / iPhoneに保存されている)に存在する必要があり、インストールするデバイスのデバイスIDもプロビジョニングプロファイルに存在する必要があります。
  2. したがって、デバイスが開発者Macに接続されていないときにアプリをクリックすると、アプリの署名付き証明書はプロビジョニングプロファイル(デバイスに存在する)の証明書と一致する必要があり、デバイスIDもプロビジョニングプロファイルの証明書と一致する必要があります。その後、アプリが実行されます。
  3. デバイスがxcodeを実行しているMacに接続されていて、デバッグする場合、キーチェーンに保存されている公開鍵と秘密鍵が機能します。xcodeは、証明書を使用してキーチェーンに保存されている公開鍵と秘密鍵のロックを解除しようとします。 mac、および上記の箇条書きも実行します。それが当てはまる場合は、正常にデバッグできます。
4

1 に答える 1

24

まず第一に、Xcode でのプロビジョニング プロファイルの選択は誤解を招きます。Xcode でのビルドは、実際にはプロファイルとはまったく関係ありません。実際に何が起こるかというと、Xcode はプロファイル内の公開鍵証明書をキーチェーン内の証明書と照合し、秘密鍵を使用して実行可能ファイルに署名するだけです。これは標準的な Mach-O 実行可能署名です。これが、Xcode 5 でより明確にするために変更した理由でもあります。これは、プロファイルのエラー (署名 ID が見つかりません) の原因でもあります。これは、Xcode がプロファイル内の公開鍵に対応する秘密鍵を見つけられなかったことを意味します。

個人の開発者証明書は、標準の PKI のものです。Mac は、Apple があなたの秘密鍵を認識しない方法で、証明書を求める要求を Apple に送信します (SSL 証明書要求と同様)。Apple が証明書を生成し、キーチェーンがそれを元の要求と照合して、証明書の公開鍵と秘密鍵を提供します。個々の開発者のプロファイルが作成されると、その開発者の公開鍵がリストされます。チーム プロファイルが作成されると、選択したすべてのチーム メンバーの公開鍵が含まれます。これにより、チーム メンバーは実行可能ファイルに署名できますが、署名者の名前は個人ではなくチーム名になります。

iOS が実行可能ファイルを起動するとき、最初に署名をチェックします。署名が Apple App Store によって署名されている場合は、実行されます。

そうでない場合は、インストールされているプロビジョニング プロファイルをチェックします。プロファイルには以下が含まれます: 1. 開発者証明書のリスト 2. アプリ ID 3. 付与する権利 (iCloud、Game Center など) 4. デバイス UDID のリスト 5. すべてがまとめられ、Apple によって署名されます。

プロファイルは、Apple の鍵 (Apple の公開鍵を使用) によって署名されていることを確認するためにチェックされます。次に、現在のデバイスの UDID がリストにあることを確認します。また、アプリケーション ID が一致することも検証します (ただし、ワイルドカードは使用できます)。次に、有効な開発者証明書の公開鍵のリストに対して Mach-O 署名をチェックします。それらのいずれかが一致すると、実行可能ファイルが実行され、リストされた資格が付与されます。そうでない場合はブロックされます。

テキスト エディターで .mobileprovision ファイルを開くことを強くお勧めします。あなたは多くを学ぶでしょう!

于 2013-11-25T03:54:46.167 に答える