2011-07-27 14 views
100

これは一般的な質問ですが、特にAndroidでの使用に興味があります。キーストアファイルとは何ですか、それは何のために使われていますか?Androidキーストアファイルとは何ですか、それは何のために使用されていますか?

複数のAndroidアプリケーションが同じキーストアを使用してアプリケーションに署名することができますか(正確には.apkに「署名」することを意味します)、これに何か影響がありますか?

+0

あなたは2つのトピックを融合させているようです。最初はキーストアで、2番目はAPK署名です。 Nikolay Elenkovの[Androidセキュリティの内部:Androidのセキュリティアーキテクチャの詳細ガイド](https://www.amazon.com/dp/1593275811)も参照してください。 – jww

答えて

105

私が提供する答えは、キーストアファイルが要求している人に自分自身を認証することです。 .apkファイルに署名するだけでなく、個人証明書を保管したり、送信するデータに署名したり、さまざまな認証を行うことができます。

あなたがAndroid用に何をしているのか、apkの署名について言及しているのでおそらくあなたが探しているものに関して、それはあなたの証明書です。あなたはあなたの資格情報を使ってアプリケーションにブランディングをしています。同じキーで複数のアプリケーションにブランドを付けることができます。実際には、1つの証明書を使用して複数のアプリケーションを作成することを推奨します。アプリケーションがあなたに属していることを追跡するのが簡単です。

私はあなたが意味するものが意味するものがわかりません。あなたの証明書の所持者以外の誰もあなたのアプリケーションを更新できないということです。これは、あなたが野生の中にそれをリリースした場合、アプリケーションに署名するのに使った証明書を失うことを意味し、更新をリリースすることはできませんので、その証明書を安全に保ち、

しかし、apkにワイルドカードを公開するのは別として、それを使ってあなたのデバイスをSSL経由でサーバーに認証することができます(Android関連もあります)。

+26

私はあなたの用語 "野生へのリリース"を好む – bluezald

+2

非常に良い答え。また、アプリケーションで「プッシュデータ」を使用する場合は、キーストアファイルが必要であることに注意してください。 – KapteinMarshall

+0

キーストアのマシンは特定ですか?それとも、どのマシンでもアプリを更新するために使うことができますか? – Yawar

0

keytoolの全体のアイデアは、そのapkのソースを中継する一意の識別子でapkに署名することです。私が理解しているものからのキーストアファイルがデバッグに使用されるので、apkは生産のためにapkに署名することなくkeytoolの機能を持っています。はい、デバッグの目的で、複数のapkに単一のキーストアで署名することができるはずですが、プロダクションに進む際に理解してください。各apkの識別子としてユニークなkeytoolsが必要です

+0

エミュレータまたは実際のデバイスのいずれかで、デバッグするためにアプリに署名する必要はありません。 – Marcus

+0

私はあなたがそれをデバッグするために署名しなければならないということを意味しませんでしたが、あなたのキーツールのテスト実装としてキーストアを使うことができます。 –

+0

私は 'keytool'はあなたが意味するものだとは思わない。 keytoolは、キーストアを生成するために使用されるJavaプログラムです。 – Otra

7

署名プロセスの詳細については、 Androidのドキュメントはこちらhttp://developer.android.com/guide/publishing/app-signing.html

はい、同じキーストアで複数のアプリケーションに署名できます。しかし、重要なことを一つ覚えておく必要があります:Playストアにアプリを公開する場合は、非デバッグ証明書でアプリに署名する必要があります。ある日、このアプリのアップデートを公開したい場合、apkに署名するために使用されたキーストアは同じでなければなりません。そうしないと、更新プログラムを投稿できなくなります。

14

Androidマーケットでは、パブリック/プライベートキーメカニズム(証明書はプライベートキーで署名されています)を使用して、証明書で公開するすべてのアプリに署名する必要があります。これにより、リモートの攻撃者が悪質な更新プログラムを市場に投入することを防ぐセキュリティー層が提供されます(すべての更新プログラムは同じキーで署名する必要があります)。 AndroidデベロッパーのサイトのApp-Signing Guideから

:一般的に

は、すべての開発者のための推奨される戦略は、あなたのアプリケーションの期待寿命を通して、同じ証明書を使用して、アプリケーションのすべてに署名することです。あなたがそうする必要がある理由はいくつかあります...

同じキーを使用すると、同じキーで署名されたアプリケーション間でデータを共有する方が簡単です。もう1つは、同じキーで署名された複数のアプリケーションを同じプロセスで実行できるため、開発者はよりモジュラーなアプリケーションを構築できます。

関連する問題