Help us understand the problem. What is going on with this article?

iOS .mobileprovisionのデベロッパー証明書を確認する

More than 3 years have passed since last update.

CLIバリバリの環境で開発していてiOSのプロビジョニングプロファイル(.mobileprovision)の内容や有効期限を確認したくなる事態がままあるのでその方法のメモ

.mobileprovisionの内容を表示する

プロビジョニングプロファイル(.mobileprovision)の内容をプレインテキストとして表示するには複数の方法がありますが、macOS上でなら以下の方法が簡単でしょう。

macOS
$ security cms -D -i [プロビジョニングプロファイル]

Linuxなど、他の環境だとsecurityコマンドが使えないので、opensslコマンドを使い、以下の様にすれば同じ様な効果が得られます。

Linux
$ openssl smime -inform der -verify -noverify -in [プロビジョニングプロファイル] 2> /dev/null

※Linuxなどの環境ではRoot CA証明書などの関係でプロビジョニングプロファイルの検証がエラーになるので、それを無視するのに-noverifyオプションを使っています。

プロビジョニングプロファイルの署名に使われているデベロッパー証明書の内容を表示する

macOSなら、先ほどの.mobileprovisionの内容を表示する方法を応用してPlistBuddyなどを組み合わせることでプロビジョニングプロファイル(.mobileprovision)のDeveloperCertificatesを取り出してopensslでプレインテキストとして表示します。

macOS
$ /usr/libexec/PlistBuddy -c "Print DeveloperCertificates:0" /dev/stdin <<< $(security cms -D -i [プロビジョニングプロファイル]) | openssl x509 -inform der -text -noout

Linuxの場合はplistを扱うためのPlistBuddyがないので少々厄介ですが、grepやsedを組み合わせてDeveloperCertificatesの値をうまく取り出せればなんとかなります。

Linux
/usr/bin/openssl smime -inform der -verify -noverify -in \
 [プロビジョニングプロファイル] 2> /dev/null | \
 grep -o "<data[^>]*>[^<]*</data>" | sed -e "s/<data>\(.*\)<\/data>/\1/" | \
 base64 -d | openssl x509 -inform der -text -noout

※この方法はプロビジョニングプロファイルの中に〜のタグが1つしか存在しないという想定で書かれた乱暴なほうほうなので少々危なっかしいですが…

kazuhidet
MZ-80向けのゲーム開発を皮切りに、その後は大手ゲームメーカーでのゲーム開発、某海外企業のCコンパイラ、DBインタープリタ/コンパイラのローカライズ、その後Linuxディストリビューション開発などを経て、現在はスマートフォン向けアプリ開発会社で技術アドバイザーに従事 尊敬する人物はステファン・ゲーリー・ウォズニアック
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした