web-dev-qa-db-ja.com

iOSのプロビジョニングプロファイルと証明書について

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

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

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

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

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

そうでない場合は、インストールされているプロビジョニングプロファイルを確認します。プロファイルには次のものが含まれます。1.開発者証明書のリスト2.アプリID 3.付与する資格(iCloud、ゲームセンターなど)4.デバイスのUDIDのリスト5.すべてがまとめられ、Appleによって署名されます。

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

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

23
russbishop