11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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つしか存在しないという想定で書かれた乱暴なほうほうなので少々危なっかしいですが…

11
12
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
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?