Androidキーストアファイルとは何ですか?また、何に使用されますか?


128

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

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


1
2つのトピックを混同しているようです。1つ目はキーストアで、2つ目はAPK署名です。Nikolay ElenkovのAndroid Security Internals:An In-Depth Guide to Android's Security Architectureもご覧ください。
jww 2017年

回答:


130

私が提供する答えは、キーストアファイルは、求めている誰に対しても自分を認証することです。.apkファイルへの署名だけに限定されず、個人証明書の保存、送信するデータの署名、さまざまな認証に使用できます。

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

あなたが意味するところが何を意味するのか分かりません。証明書の所有者以外はアプリケーションを更新できないことを意味すると思います。つまり、実際にリリースすると、アプリケーションの署名に使用した証明書を失い、更新をリリースできなくなるため、その証明書を安全に保管し、必要に応じてバックアップしてください。

しかし、APKに署名して実際にリリースする以外に、必要に応じて、SSLを介してデバイスをサーバーに対して認証することもできます(Androidにも関連しています)。


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

キーストアマシン固有ですか?または、どのマシンでも使用してアプリを更新できますか?
Yawar

7
良い説明。KeyStorePassword、Keyエイリアス、KeyPasswordが必要な理由も説明してください。3つのキーを持つことは冗長なようです。
ARK

18

Androidマーケットでは、公開/秘密鍵メカニズムを使用して、公開するすべてのアプリに証明書で署名する必要があります(証明書は秘密鍵で署名されています)。これは、特にリモート攻撃者が悪意のある更新をアプリケーションにプッシュして市場に出すことを防ぐセキュリティの層を提供します(すべての更新は同じキーで署名されている必要があります)。

Androidデベロッパーサイトのアプリ署名ガイドから:

一般に、すべての開発者に推奨される戦略は、アプリケーションの予想される寿命を通じて、すべてのアプリケーションに同じ証明書で署名することです。そうすべき理由はいくつかあります...

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


10

署名プロセスの詳細については、Androidの公式ドキュメント(http://developer.android.com/guide/publishing/app-signing.html)を参照してください。

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


いいえ、これは間違っています。apkの署名に使用するキーストアは異なる場合がありますが、apkの署名に使用するキーは同じである必要があります。キーストアファイルは、キーと証明書の情報を格納するために使用されるファイルであり、同じキーストアファイルに複数のキーエンティティを含めることができます。
zeleven

0

keytoolの全体的なアイデアは、そのAPKのソースを示す一意の識別子でAPKに署名することです。(私が理解しているものからの)キーストアファイルはデバッグに使用されるため、本番用のAPKに署名することなく、apkがkeytoolの機能を備えています。つまり、デバッグの目的で、単一のキーストアで複数のapkに署名できるはずです。ただし、本番環境に移行する際には、作成する各APKの識別子として一意のキーツールが必要になることを理解してください。


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

デバッグするために署名する必要があるという意味ではありませんでしたが、keystoreをkeytoolのテスト実装として使用できます。
アダムストーム

私はkeytoolあなたが何を意味するのか考えていません。keytoolは、キーストアの生成に使用されるJavaプログラムです。
オトラ

はい、あなたは正しいです、keytoolは私が意味するものではありません。「キー」が私の意味だと思います。デバッグ用に共通のapkキーを使用できることを質問者に説明しようとしただけでしたが、公開時には、各apkが編集およびアップグレードするための一意のキーを持つ必要があります。
アダムストーム

ただし、一意のキーは必要ありません。1つの秘密キーで複数のAPKに署名できますが、実際に署名することをお勧めします。10個のアプリの10個の異なる証明書/キーを追跡することを想像できますか?
オトラ'27 / 07/27
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.