LoginSignup
2
2

More than 5 years have passed since last update.

Androidで、アプリ(apk)の署名が、SHA256とSHA1のどちらか確認したい時

Last updated at Posted at 2016-10-11

あくまで確認用の手順です。

apk(zip圧縮されたファイル)から、署名を取り出す

ファイルは、(展開したapk) META-INF\cert.rsa など。

keytoolで確認する

keytool -printcert -file cert.rsa
※keytoolは、(jdk) bin\keytool などにあるはず。

(結果の例)
・・・
署名アルゴリズム名: SHA256withRSA
・・・

参考 (確認方法)

[Stackoverflow - How do I find out which keystore was used to sign an app?]
http://stackoverflow.com/questions/11331469/how-do-i-find-out-which-keystore-was-used-to-sign-an-app

参考 (SHA256サポート状況)

Android 2.3以降 とする例が多い。(サイトによる)
端末ごとの利用可否は、必要に応じて検索して下さい。

中間証明書の問題もあるので、参考程度に。

[digicert] 2.3+
https://www.digicert.com/sha-2-compatibility.htm

[globalsign] 1.0+ (1.6 / 2.2)
https://support.globalsign.com/customer/portal/articles/1499561-sha-256-compatibility

[symantec] 2.3+
https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&id=SO25586

蛇足1 なぜ確認したかったか

・SHA1からSHA256への移行時期がせまっている。
(完全移行した場合は、動作対象から一部の端末を切り捨てることになる)
※SHA256のサポートは、(最低レベルはあるが)APIレベル依存ではなく、端末依存です。

・(古い端末では、)Playストアやアプリが、「安全性の低いアプリの許可」を有効にしないと利用できない場合があるので、気になった。
※実際はInApp-Billingなどの通信の問題(データの署名などがSHA1)だと思いますので、アプリの署名自体は直接影響なさそうですが・・
逆に、InApp-Billingを使っていれば、新しい端末でも影響を受けそうです。

ということで、Playストアについては、要調査。
(通常のエミュレータ(AVD)では調査できないような気もしますが。)

アプリ(アイテムの購入処理など)については、回避手段・・を探すところから。

蛇足2(というより、メモ)

さらっと書いてある制限。
(有効期間25年などにしてあれば、大丈夫。短くする場合は要注意。)
https://developer.android.com/guide/publishing/app-signing.html?hl=ja#cert
アプリケーションを Android マーケットに公開する予定の場合、2033 年 10 月 22 日までの有効期間が必要です。有効期間がこの日付以前に期限切れになるキーで署名されたアプリケーションは、アップロードできません。

2
2
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
  3. You can use dark theme
What you can do with signing up
2
2