[iOS][OpenSSL] .p12キーストアファイル証明書の中身を確認する

iOS開発で頻繁にお世話になる .p12 ファイル(秘密鍵+証明書のセット)の情報を確認する方法です。
SHA1フィンガープリント、有効期限、チームID,名前などがコマンドラインから簡単に確認できます。

keytool コマンドを使う方法

こちらが基本的な方法になります。

keytool -list -v -keystore mykeystore.p12 -storetype PKCS12 -storepass foobar

(mykeystore.p12 は署名を確認したいファイル名。foobarはキーストアにかけているパスワード)
パスワードがない場合、 -storepass “” のように空文字列を指定します。

結果:

キーストアのタイプ: PKCS12
キーストア・プロバイダ: SunJSSE

キーストアには1エントリが含まれます

別名: ios distribution: foo inc.
作成日: 2017/02/13
エントリ・タイプ: PrivateKeyEntry
証明書チェーンの長さ: 1
証明書[1]:
所有者: C=US, O=foo Inc., OU=Q000000000, CN=iPhone Distribution: foo Inc. (Q000000000), UID=Q0
発行者: CN=Apple Worldwide Developer Relations Certification Authority, OU=Apple Worldwide Developer
シリアル番号: 437e610e0f54ed7f
有効期間の開始日: Tue Sep 10 12:30:17 JST 2016 終了日: Wed Sep 10 12:30:17 JST 2017
証明書のフィンガプリント:
         MD5:  4F:2A:8B:EB:8B:65:A9:84:63:87:58:12:AE:85:63:1A
         SHA1: 8A:46:5E:B1:77:16:3E:68:A9:DE:EE:74:7F:2A:AF:DD:6C:AE:21:FF
         SHA256: 4A:A1:24:BE:0F:7C:4F:65:C2:1D:01:BB:02:65:E0:85:59:A6:EC:3E:3F:60:33:E7:B3:D2:A2:01
         署名アルゴリズム名: SHA256withRSA
         バージョン: 3
〜以下略〜

openssl コマンドを使う方法

openssl コマンドから証明書にアクセスすることも確認できます。
p12だけを扱うならkeytool のほうが表示も見やすく便利ですが、
証明書の操作、変換など、汎用的な処理を行える openssl でのやり方も知っておくと訳に立つかもしれません。

openssl pkcs12 -in mykeystore.p12 -nodes  -passin pass:foobar |openssl x509 -noout -fingerprint

(mykeystore.p12 は署名を確認したいファイル名。foobarはキーストアにかけているパスワード。パスワードなしのときはパスワードだけ省略して、 -passin pass: としてください。)

結果:

MAC verified OK
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            1a:7f:78:be:0e:55:ef:a0
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Apple Inc., OU=Apple Worldwide Developer Relations, CN=Apple Worldwide Developer Relations Certification Authority
        Validity
            Not Before: Sep 10 12:30:17 2016 GMT
            Not After : Sep 10 12:30:17 2017 GMT
        Subject: UID=Q000000000, CN=iPhone Distribution: foo Inc. (Q000000000), OU=Q000000000, O=foo Inc., C=US
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
〜以下略〜

フィンガープリントだけほしいときは、 -text なしでもOKです。

openssl pkcs12 -in mykeystore.p12 -nodes  -passin pass:foobar |openssl x509 -noout -fingerprint

結果:

MAC verified OK
SHA1 Fingerprint=8A:46:5E:B1:77:16:3E:68:A9:DE:EE:74:7F:2A:AF:DD:6C:AE:21:FF

どういうときに使う?

xcodebuild, ipa などコマンドラインからビルドするときに、本当に正しい署名が使われているかの確認に使っています。
Circle CI などの自動ビルドログなどを確認するときに知ってると便利ですね。

関連

サーバなどでp12と同様に使われる pem ファイルの扱い方については、別の記事でまとめましたのでこちらもあわせてどうぞ。

[OpenSSL] pem ファイルとは?証明書の中身を確認する方法

p12ファイルをなくした時などに使える、証明書、秘密鍵からp12ファイルを作る方法はこちらに書きました。

証明書と秘密鍵からp12ファイルを作る