Android APKがリリース証明書で署名されていることを確認するにはどうすればよいですか?


222

Android APKがリリースで署名されており、証明書をデバッグしていないことを確認するにはどうすればよいですか?


6
私が書いたスクリプトストアに対するAPKを検証します。
JohnnyLambada

あなたが持っているなら答えを受け入れます。
Rinkal Bhanderi 2015

@JohnnyLambadaスクリプトをMacで実行するにはどうすればよいですか。
アーロン・アジャリ

1
@JohnnyLambadaスクリプトを実行するにはどうすればよいですか?
2015

@sunilこれは、新しいbash関数を作成するbashスクリプトです。リンクをたどってファイルに貼り付けますsource thatfile。スクリプト内のコメントは、それを実行する方法を説明しています。
JohnnyLambada

回答:


372

このコマンドを使用します(コマンドプロンプトでjava <jdk <bin pathに移動します)

$ jarsigner -verify -verbose -certs my_application.apk

「CN = Android Debug」と表示されている場合、これは.apkがAndroid SDKによって生成されたデバッグキーで署名されていることを意味します(署名されていないことを意味します)。それ以外の場合は、CNの何かが見つかります。詳細については、http//developer.android.com/guide/publishing/app-signing.htmlを参照してください。


1
2 diff apk files.soのコマンド実行の最後にjar検証済みのメッセージが表示されたため、混乱しました。しかし、それは1 apkに対してCN = "android debug"を提供し、他のapkに対しては異なる.gotは、1が署名されているknwに感謝します。
iRunner 2012年

3
これはどのようにして署名を検証しますか?システムの信頼できるCAを使用しますか?または、これはjarファイルの整合性をチェックするツールにすぎませんか?ありがとう
モスタファシャベルディ2014

2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)-これは、署名されていないことを意味しません。それはあなたが書いたばかりのことを意味します-それはデバッグキーで署名されています。
ドミトリーザイツェフ2015年

3
組織、場所などの値が偶然同じではなく、まったく同じ証明書ファイルで署名されていることをどのように確認できますか?
OlivierM

1
ありがとう。したがってjarsigner -verify -verbose -certs myapp.apk | grep CN= | less、「CN = Android Debug」は表示されません。
rpattabi

70

コンソールコマンドを使用します。

apksigner verify --print-certs application-development-release.apk

apksignerは../sdk/build-tools/24.0.3/apksigner.batにあります。ビルドツールv。24.0.3以降のみ。

googleドキュメントもお読みくださいhttps : //developer.android.com/studio/command-line/apksigner.html


私が見つかりました。apksigner`に%LOCALAPPDATA%\アンドロイド\ SDK \ビルドツール\ 25.0.3`(および他のすべてのビルドツールのバージョン私はインストールしていた)
ジョン・

2
build-toolsのapksignerバージョン26.0.0にはないことに注意してください。これはissuetracker.google.com/issues/62696222で追跡され、次のバージョンで修正される予定です。それまでの回避策はapksignerfrom を使用すること25.0.3です。
friederbluemle 2017年

2
更新:apksignerバージョンに含まれています26.0.1
forresthopkinsa '25 / 09/25

更新:APKSignerも26.0.2、26.0.3、27.0.0、27.0.1、27.0.2にあります。今後のすべてのリリースで見つかると思います:)
Kirill Vashilo

2
詳細な出力の使用-v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo

59

このコマンドを使用します:(Jarsignerは、Java binフォルダーにあります。コマンドプロンプトのjava-> jdk-> binパスに移動します)

$ jarsigner -verify my_signed.apk

.apkが適切に署名されている場合、Jarsignerは「jar検証済み」と出力します


13
デバッグAPKとリリースAPKの両方が署名されているため、これは「jar検証済み」になります。@Anassの回答の詳細を確認してください。
rpattabi

私はこのコマンドを正確に試して確認しました。その後、実験としてAPKに移動し、sigファイルとマニフェストを除くすべてのファイルを文字通り削除しましたが、それでも検証されました。ここで何かが非常に間違っています。しかし、私はまだ@Anassの答えを試していません。
orblivion

39

最も簡単なもの:

keytool -list -printcert -jarfile file.apk

これはJava組み込みのkeytoolアプリを使用し、抽出やビルドツールのインストールを必要としません。


keytoolすぐに実行できない人は、これを確認%JAVA_HOME%\binして、パスに追加してみてください
TT--

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.