64

たくさんの.ipaファイルがあり、スクリプトを使用してそれらを辞任しました。

では、プロビジョニングプロファイル/署名証明書をチェックして、正しい情報を使用していることを確認するにはどうすればよいでしょうか。

理想的には、任意の.ipaファイルを取得して、署名に使用されたプロビジョニングプロファイル/署名証明書を教えたいと思います。

経歴:私たちの企業配布証明書は期限切れになり、私は私たちのものに再署名したいと思います。Xcodeで作成およびアーカイブしたすべてのものを簡単に理解できますが、サードパーティベンダーが配布物を作成した場合はそれができません。新しい.ipaには不明な変更が含まれ、問題が発生する可能性があり、おそらく私たちにも請求される可能性があるため、再署名された.ipaファイルを要求することは避けたいと思います...しかし、最初の問題についてはもっと心配しています。

古い配布証明書と新しい配布証明書の両方がまだ有効であるため(6か月の重複が発生します)、新しい証明書が使用されていることを確認できる必要があります。そうしないと、古い証明書の有効期限が切れて「辞任」スクリプトが実行されなかったときに、本当にばかげているように見えます。 tは実際に仕事をします。

4

7 に答える 7

81

プロビジョニングプロファイルには、ターミナルコマンドを使用して表示できるUUIDがあります。

セキュリティcms-D-i(path_to_your_provisioning_profile)

次のようなコマンド出力のUUIDセクションを参照してください。

<key>UUID</key> <string>A008C022-7B82-4E40-8B37-172763E1E3CC</string>

Xcodeは、アプリケーションの署名に使用されるプロビジョニングプロファイルを.appバンドル内に挿入します。それを見つけるには、.ipaの名前を.zipに変更し、Finderで解凍し、/Payloadで.appファイルを見つけます。.appファイルの[パッケージの内容を表示]を選択し、。という名前のプロビジョニングプロファイルを見つけますembedded.mobileprovision

上記のコマンドを使用して資格をダンプし、[ライブラリ]の下の[Xcodeオーガナイザー]>[デバイス]タブ>[プロビジョニングプロファイル]セクションのプロファイル内にあるUUIDと比較します。それらの「Finderに表示」を使用して、ディスク上の位置を明らかにすることができます。

于 2013-02-14T22:44:06.140 に答える
25

パーティーに遅れて…。

しかし、このツールは私に時間を節約します:遊牧民/深セン

$ ipa info /path/to/app.ipa

+-----------------------------+----------------------------------------------------------+
| ApplicationIdentifierPrefix | DJ73OPSO53                                               |
| CreationDate                | 2014-03-26T02:53:00+00:00                                |
| Entitlements                | application-identifier: DJ73OPSO53.com.nomad.shenzhen    |
|                             | aps-environment: production                              |
|                             | get-task-allow: false                                    |
|                             | keychain-access-groups: ["DJ73OPSO53.*"]                 |
| CreationDate                | 2017-03-26T02:53:00+00:00                                |
| Name                        | Shenzhen                                                 |
| TeamIdentifier              | S6ZYP4L6TY                                               |
| TimeToLive                  | 172                                                      |
| UUID                        | P7602NR3-4D34-441N-B6C9-R79395PN1OO3                     |
| Version                     | 1                                                        |
+-----------------------------+----------------------------------------------------------+

2020:メンテナからの更新

https://github.com/nomad/shenzhen/blob/master/README.md

注:深圳はXcode 6ビルドAPIを使用していますが、これはほぼ3年間非推奨になっています。これにより、アプリがSwift 3、watchOS、その他のアプリターゲットを使用している場合に問題が発生します。

iOSアプリを構築するための維持されている代替手段は、最新のXcodeAPIを使用するジムです。ビルドを配布するには、fastlaneを使用できます。開始方法の詳細については、iOSベータ版の導入ガイドをご覧ください。

于 2015-03-19T21:29:24.623 に答える
16

Bobjtの回答に基づいて、IPCUを使用してプロファイルの詳細を取得しました。

  1. .ipaの名前を.zipに変更します
  2. Finderで解凍します
  3. /Payloadで.appファイルを見つけます。
  4. .appファイルの[パッケージの内容を表示]をクリックし、embedded.mobileprovisionという名前のプロビジョニングプロファイルを見つけます。

  5. mobileprovisioningファイルをiPhone構成ユーティリティにドラッグします

IPCUは、プロファイルの名前/有効期限などを表示します。

于 2013-08-21T14:53:07.033 に答える
5

結局、BobjtとHaemEternalのソリューション提案を組み合わせて使用​​することになりました。

  1. アーカイブを検索します。
  2. パッケージの内容を表示します。
  3. .appファイルをコピーします
  4. .appファイルのパッケージコンテンツを表示します。
  5. Embedded.mobileprovisionファイルをコピーします。
  6. 「securitycms-D-i(path_to_your_provisioning_profile)」を実行します
  7. 手順6のof呼び出しの結果からUUID番号を見つけます。
  8. Iphone構成ユーティリティを開き、プロファイルを調べて、同じUUID番号を持つプロファイルを見つけます。
于 2014-03-26T05:08:27.180 に答える
4

次のプロセスを使用して、正常にテストできました。

  1. 元の.ipaをデバイスにインストールします。
  2. [設定]->[一般]->[プロファイル]に移動します(古いプロビジョニングプロファイルを参照)
  3. デバイスからアプリと古いプロファイルを削除します
  4. アプリを辞任します。
  5. 再署名されたアプリをデバイスにインストールします
  6. [設定]->[一般]->[プロファイル]に移動します(新しいプロビジョニングプロファイルを参照)

これは、プロビジョニングプロファイルが更新されたことを確認するための防弾方法のようです。プロファイルには、署名証明書が1つしかないため、新しい証明書で署名する必要があります。

(しかし、私はまだより良い方法を見つけたいです)

于 2013-02-14T19:48:16.750 に答える
1

特定の証明書が.ipaの署名に使用されたかどうかを判断しようとしている場合は、次の操作を実行できます。

Pythonに慣れている場合は、私が作成したこのスクリプトを使用して、.ipaに埋め込まれている証明書を既存の証明書と比較できます。

https://gist.github.com/ronsims2/1b7a8b9e15898f9406788988106b2f78

python ipa_cert_checker.py /Users/janedoe/Dcouments/Foobar.ipa /Users/janedoe/Dcouments/barfoo.cer

または、Macのコマンドラインからスクリプトが手動で行うことを実行することもできます。

  1. IPAアーカイブを解凍します。「Payload」というフォルダが作成されます。

    unzip Foobar.ipa

  2. 埋め込まれたプロビジョニング情報を読みます。ペイロードディレクトリ内のパッケージ/フォルダの名前は、.app拡張子を除いて.ipaと同じであることに注意してください。

    security cms -Di Payload/Foobar.app/embedded.mobileprovision

上記のコマンドの出力では、証明書は、キー「DeveloperCertificates」に関連付けられた配列データ要素にbase64文字列として埋め込まれています。3.証明書をコピーし(xmlタグを含めず、余分な空白がないことを確認します)、テキストとして便利な場所に保存します。この例では、これを「cert_from_foobar.txt」と呼びます。

  1. Base64は既知の証明書をエンコードし、出力をファイルに保存します。

    base64 barfoo.cer > barfoo.txt

  2. 既知の証明書を、保存した埋め込み証明書と比較します。 cmp cert_from_foobar.txt barfoo.txt || echo 'These files are NOT the same.'

それらが同じである場合、メッセージは表示されません。

于 2019-03-19T13:43:44.667 に答える
0

私の知る限り、特定の配布証明書が使用されているかどうかは、上記のいずれも実際にはすぐにはわかりませんでした。

以下は私のために働いたものです。

まず、キーチェーンアクセスを開き、証明書をフィルタリングして、iPhone配布証明書を見つけます。

キーチェーンアクセスリスト証明書

配布証明書を右クリックして、[情報を見る]を選択します。新しいウィンドウが表示されます。

配布証明書のシリアル番号を表示するウィンドウ

この10進数のシリアル番号を16進数に変換します。たとえば、選択してコピーし、電卓アプリに貼り付けます([表示]-> [プログラマー]メニューからプログラマーモードに切り替えます)。

長いシリアル番号を表示する電卓アプリ

次に、セグメント化されたコントロールを右上の「16」に切り替えます。

16進数で長いシリアル番号を表示する電卓アプリ

この知識を使用して、ターミナルを開き、IPAを解凍してから、ペイロードディレクトリに移動します。

$ unzip MyApp.ipa
$ cd Payload

証明書を抽出します。

$ codesign -d --extract-certificates MyApp.app

最初の証明書のシリアルを表示します。

$ openssl x509 -inform DER -in codesign0 -noout -nameopt -oneline -serial
serial=20DE00FFA05EED03

この場合、16進シリアルは上記の証明書と一致します。

于 2021-10-26T13:32:40.867 に答える