2010-12-01 6 views
33

自分のデバイスにインストールしたアプリケーションに誰が署名したのかを確認する必要があります。これは一般的にデバイスやPCで可能ですか?Androidデバイスでapkに署名した人の身元を確認するにはどうすればいいですか?

+0

まあを使用することができ、必ずしもすべてのアプリは、右ページについて持っていますか?さらに、私はアプリに署名するために使用した証明書の情報に一致しない可能性がありますAboutページに何かを書くことができるアプリの開発者です... –

+0

Androidで、あなたはすべてのアプリを列挙し、X509署名証明書については、[link] http://stackoverflow.com/a/16305427/2225646を参照してください。 Google Playには、Indenile Signatureという無料のアプリもあります。 – Yojimbo

答えて

54

(raw apkファイルへのアクセス権があると仮定します。通常は、その名前と場所を知っている、または推測していると、/ dataの内容を非あなたが/ CERT.RSA

または実際のツールを使用して

をzipファイルとしてAPKを開き、META-INFのバイナリコンテンツからASCIIテキストをフィルタリングすることができ

-rooted電話)、

jarsigner -verify -certs -verbose some_application.apk 

もちろん、署名者が誰であると主張しているかを検証する唯一の方法は、直接または検証された手段でその当事者から同じ鍵で署名されたものを入手し、署名鍵のフィンガープリントを比較します。つまり、AndroidがアプリのアップグレードとアプリIDの共有を確認する方法は、既存のAPKと同じパーティーから来ます。

+0

ヒントをありがとう!デバイスだけで同じ目標を達成する方法も分かっているのでしょうか?私の身元は私のアプリケーションのエンドユーザにとっては重要かもしれませんが、通常はPC上で操作するのが面倒です。 –

+2

jarsignerがjavaで実装されていても驚かないでしょう。ただし、unprintablesを除外することによってasciiテキストを抽出する最初の提案は、より簡単かもしれません。しかし、これがあなたのアプリケーションの場合、何がポイントですか?ユーザーがあなたのコードを信用して署名者情報を抽出した場合、おそらくあなたの画面についても信頼するでしょう。また、署名者情報を抽出しても、このエンティティが実際に署名したことが証明されていないことに注意してください。使用した証明書が実際に証明書であることを証明する必要があります。 –

+0

Googleが公開したapkでjarsignerを実行すると、X.509、CN = Android、OU = Android、O = Google Inc.、L = Mountain View、ST = California、C = US [証明書は22-08-08 01:13から08-01-36 00:13まで有効] [CertPathは検証されません:パスはトラストアンカーと連鎖しません]。本当に署名者であることを検証するためにGoogle証明書を取得するにはどうすればよいですか。 (この返信に追加することは関係しますが、別の質問を投稿したい場合はお知らせください) – mgd

関連する問題