同じキーストアファイルを使用して2つの異なるアプリケーションに署名できますか?


92

新しいアプリケーションをアップロードする必要があります。少し異なるのはデザインだけです。昨日、アプリケーションに署名するためのキーストアファイルを生成しました。同じものを使用できますか?


5
はい、できます(また、質問する前に試しましたか?)
njzk2 2011年

回答:


98

これはkeystore、任意の数のアプリケーションに使用できます。

新しいキーストアを生成する必要はありません。


6
そして、「エイリアス」の場合、何を書く必要がありますか?
Dr.jacky 2015

14
キーストアは、CONTAINS署名証明書を構成する公開鍵/秘密鍵ペアを。1つのキーストアに多数のキーペアを含めることができます。「エイリアス」は、キーストア内の特定のキーペアへの参照です。1つのキーストアですべてのキーペアを保持できますが、アプリごとに1つのキーペアが必要です。署名するアプリの名前をエイリアスとして使用します。キーストアとその中のキーペアごとに別々のパスワードを設定できます。これらのパスワードを変更し、キーストアからキーペアをインポート/エクスポートしたり、キーストアに新しいキーペアを追加したりできます。これはすべて、コマンドラインの「keytool」コマンドで実行されます。調べる。
brycewjohnson 2017

@brycewjohnson GUIを介して新しいペアをキーストアに追加できますか?
CinCout

44

これまでのコンセンサスの答えに反論します。

ほとんどの場合、ほとんどのアプリ作成者にとって、アプリ間で同じキーストア/証明書/パスワードを共有しても問題なく機能することに同意します。重要なことは、アプリがそれ自体をアップグレードできるように、「アプリケーションの予想される寿命全体にわたって同じ証明書」を使用することです。

しかし、別々のアプリまたはアプリのファミリー用に別々のキーストアを用意する非常に良い理由の1つを考えることができます。オリジナルのアップグレードとして公開するために他の誰かにアプリを販売したいと思う場合は、そのために唯一のキーストアとパスワードを共有する必要があります。おそらく大きな問題ではありませんが、少し心配する必要があります。おそらく、十分な数の購入者に対するデューデリジェンスの問題です。

また、@ ol_v_erと同じように、ドキュメントの同じ行を実際に読むことはありません。私は現在の行だと思います:

アプリケーションの予想される存続期間を通じて、すべてのアプリに同じ証明書で署名する必要があります。

(現在のバージョンではコンマがないことに注意してください)は、「ライフタイム」の推奨事項がすべてのアプリに適用されることを強調しているだけであり、実際にはすべてのアプリに同じ証明書を使用するように指示しているわけではありません。


6
アプリごとに別々のキーストアを保持することは、進むべき道です!
スーフィアン2016年

アプリごとに異なるファイルを使用することをお勧めしますよね?ただし、同じキーストアファイルを複数のアプリに使用するとどうなりますか?Firebase / Googleサービスで問題が発生しているようです。すでに使用している場合は、新しいもの(アプリごとに異なるもの)を使用することは不可能だと思いますよね?
Androidの開発者

42

公式ドキュメントには次のように書かれています。

一般に、すべての開発者に推奨される戦略は、アプリケーションの予想される存続期間を通じて、すべてのアプリケーションに同じ証明書で署名することです。あなたがそうしなければならない理由はいくつかあります...

https://developer.android.com/studio/publish/app-signing.html#considerations

そうです、すべてのアプリケーションに同じ証明書で署名してみてください。


8
そして、「エイリアス」の場合、何を書く必要がありますか?
Dr.jacky 2015

6
簡単にするために、すべてのアプリにも同じものを使用してください。
ol_v_er 2015

19

この質問と提供された回答は私にとって混乱につながるので、ここにいくつかの説明を追加したいと思います。キーストアが実際に何であるかを理解することが重要です。

キーストアは、AndroidAPKの署名に使用される公開鍵と秘密鍵のペアを安全に保存するための手段にすぎません。そうです、同じキーストアを使用して複数のAPKに問題なく署名できます。同じエイリアス(各エイリアスは証明書)を使用して複数のapkに署名することもでき、それは機能します。ただし、セキュリティに影響があります。単一のエイリアスが侵害された場合、すべてのアプリが侵害されます。

ただし、いつかアプリの権利を販売する予定の場合は、すべてのアプリに同じエイリアスを使用することはお勧めできません。ただし、apkごとに異なるエイリアスを使用する場合、同じキーストアを使用することは必ずしも悪いオプションではない場合があります。あるキーストアから別のキーストアに証明書を移動して、その証明書にのみ必要なキーを購入者に安全に渡すことができる方法があると確信しています。

非常に明確にするために、キーストアはまさにそれであり、キーの記憶媒体です。これは、apkに署名するプロセスでは実際の役割を果たしませんが、apkに署名するために実際に使用されるキーを格納するためにのみ機能します。

参照:

キーストア、証明書、およびエイリアスについて

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


1
複数の質問に同じ回答を投稿しないでください。良い答えを1つ投稿し、投票/フラグを立てて、他の質問を重複として閉じます。質問が重複していない場合は、質問に対する回答を調整してください。
Paul Roub 2016年

お詫び申し上げます。私はSOの初心者です。
Anthony Stivers 2016年

1
重複に投票するのに十分な担当者がいません。したがって、次の質問を重複として投票したい場合は、この質問が重複しないことが最も適切であると思います。これは、関連するキーワードのGoogleでの最初のランクであり、最も関連性の高い回答があります。 stackoverflow.com/questions/13023509/... stackoverflow.com/questions/14973205/... stackoverflow.com/questions/10514597/...
アンソニーStivers

待つ!同じキーストアをアプリごとに異なるエイリアスで使用するにはどうすればよいですか?!
ZiadH.20年

5

もちろん!同じキーストアファイルを何度でも使用できます。開発するすべてのアプリケーションに同じキーストアファイルを使用することをお勧めします。これは、アプリケーションを更新または変更する場合に役立ちます。その際、同じキーでアプリケーションに署名する必要があります。


2

同じ証明書(キーストア)を使用してすべてのアプリに署名します。これは、気が変わってアプリにデータを共有させたい場合に有利です。

ご存知かもしれませんが、Androidは各アプリをUIDで識別します。すべてのアプリが同じ証明書で署名されている場合は、Androidに同じユーザーIDを複数のアプリに割り当てて、それらを1つのプロセスで実行し、データを共有するように要求できます。

android doc android:sharedUserIdから

android:sharedUserId

他のアプリケーションと共有されるLinuxユーザーIDの名前。デフォルトでは、Androidは各アプリケーションに独自の一意のユーザーIDを割り当てます。ただし、この属性が2つ以上のアプリケーションで同じ値に設定されている場合、それらも同じ証明書で署名されていれば、すべて同じIDを共有します。同じユーザーIDを持つアプリケーションは、互いのデータにアクセスでき、必要に応じて、同じプロセスで実行できます。


1

最近の更新

グーグルによるアプリ署名に登録したい場合は、新しい別のキーを使用してapkまたはバンドルに署名する必要があります。そうしないと、グーグルコンソールをアップロードした後にエラーメッセージが表示されます。

ユーザーに配信されるAPKの署名にも使用されるキーで署名されたAPKまたはAndroidアプリバンドルをアップロードしました。Google Playによるアプリ署名に登録しているため、アップロードする前に、APKまたはAndroidアプリバンドルに新しいキーで署名する必要があります


android studioapk署名画面内に新しいキーを生成することができました。新しいキーストアとエイリアスを生成すると、機能する可能性があります。それは私のために働いた。
NumanKaraaslan20年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.