LoginSignup
11

More than 5 years have passed since last update.

posted at

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

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

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
What you can do with signing up
11