LoginSignup
38
37

More than 5 years have passed since last update.

Mac にインストール済みのCertificateとひもづくProvisioning Profile を調べる

Last updated at Posted at 2015-11-20

ビルドマシンのCertificate と Provisioning Profile を更新するとき 複数のDeveloper Program がインストールされていると ビルドエラーが起きてもCertificateのせいなのか Provisioning のせいなのか分からなくなることがあります。

そこで、どの名義のCertificate が Mac にインストールされているのか調べる方法と、どのCertificate がどの Provisioning とひもづいているか調べる方法をまとめます。

インストール済みの Certificate を調べる

インストール済みのCertificate とその名義はKeychain.appで調べることができます。

同アプリをひらいて 証明書を選んで 情報を見る を選ぶだけです。見方としてはサブジェクト名の 通称ユーザーIDを見ます。これが名義の名前とTeam Identifier を指しています。

スクリーンショット 2015-11-20.png

Apple Developer Program の名義は Team Identifier で区別できます。Team Idは同じ法人であっても Standard ProgramとEnterprise で異なります。

なお、security コマンドでもいろいろな情報が取得できます:

$ security find-identity -v -p codesigning
  1) <SHA-1 hash> "iPhone Developer: ほげほげ"
     1 valid identities found
$ security find-certificate -Z -p
SHA-1 hash: <SHA-1 hash>
-----BEGIN CERTIFICATE-----
<PEM String>

Certificate がどの Provisioning とひもづいているか調べる

Certificate がひもづくProvisioning を知るには mobileprovision ファイルを調べます。

mobileprovisionファイルは ~/Library/MobileDevices/Provisioning Profiles にあります。同ファイルを調べるには security コマンドを使います:

$ security cms -D -i <UDID>.mobileprovision
..
    <key>AppIDName</key>
..
    <key>ApplicationIdentifierPrefix</key>
    <array>
    <string><Team Identifier></string>

出力結果のうち ApplicationIdentifierPrefix がそのProvisioning とひもづく Team Identifier を指しています。

ちなみに、DeveloperCertificates は PEM形式の Certificateです。

    <key>DeveloperCertificates</key>
    <array>
    <data><PEM String>

(余談) ipa ファイルを調べて Team Id とCertificate を割り出す

Team Id は ipaファイルをcodesign コマンドで調べるとわかります:

$ codesign -vv -d foo.app
..
Identifier=<Bundle identifier>
..
Authority=<Developer Programの名義>
..
TeamIdentifier=<Team Identifier>

いっぽう Certificate は ipa ファイルのなかにある embedded.mobileprovisionでわかります:

  • ipaファイルの拡張子をzip にrename してアンアーカイブ
  • Payload ディレクトリのなかの app ファイルを選んで パッケージの内容を表示

このなかに codesign に使った embedded.mobileprovision があります。あとは security コマンドを使うだけです:

$ security cms -D -i embedded.mobileprovision
..
    <key>AppIDName</key>
..
    <key>ApplicationIdentifierPrefix</key>
    <array>
    <string><Team Identifier></string>

参考資料

38
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
37