Puis-je utiliser le même fichier keystore pour signer deux applications différentes?

89

Je dois télécharger une nouvelle application, c'est juste le design qui est un peu différent. Hier, j'ai généré le fichier keystore pour signer l'application. Puis-je utiliser le même?

Raluca Lucaci
la source
5
oui vous pouvez (aussi, avez-vous essayé avant de demander?)
njzk2

Réponses:

96

Vous pouvez l'utiliser keystorepour n'importe quel nombre d'applications.

Pas besoin de générer un nouveau keystore.

Chirag
la source
6
Et pour «Alias», que dois-je écrire?
Dr.jacky
12
Un fichier de clés CONTIENT les paires de clés publiques / privées qui constituent un certificat de signature. Un keystore peut contenir plusieurs paires de clés. Un «alias» est une référence à une paire de clés particulière dans le keystore. Un magasin de clés peut contenir toutes vos paires de clés, mais vous devriez avoir une paire de clés par application. Utilisez le nom de l'application que vous signez comme alias. Vous pouvez avoir des mots de passe distincts pour votre fichier de clés et pour chaque paire de clés qu'il contient. Vous pouvez modifier ces mots de passe et importer / exporter des paires de clés à partir du fichier de clés ou ajouter de nouvelles paires de clés à votre fichier de clés. Tout cela est fait avec la commande 'keytool' en ligne de commande. Cherchez-le.
brycewjohnson
@brycewjohnson Est-ce que de nouvelles paires peuvent être ajoutées au keystore via une interface graphique?
CinCout
43

Je vais faire un contre-argument à la réponse consensuelle jusqu'à présent.

Je conviens que pour la plupart des auteurs d'applications, la plupart du temps, le partage du même fichier de clés / certificat / mot de passe entre vos applications fonctionnera correctement. L'essentiel est d'utiliser « le même certificat tout au long de la durée de vie attendue de vos applications » afin que l'application puisse se mettre à niveau.

Mais je peux penser à une très bonne raison d'avoir des keystores séparés pour des applications ou des familles d'applications distinctes. Si vous pensez que vous voudrez peut-être vendre une application à quelqu'un d'autre pour qu'il la publie en tant que mise à niveau de l'original, vous devrez partager votre fichier de clés et votre mot de passe uniques avec eux pour le faire. Probablement pas un gros problème, mais un peu de souci pour vous et, peut-être, un problème de diligence raisonnable pour un acheteur assez gros.

De plus, je ne lis vraiment pas la même ligne dans la documentation de la même manière que @ol_v_er. Je pense que la ligne actuelle:

Vous devez signer toutes vos applications avec le même certificat tout au long de la durée de vie prévue de vos applications.

(notez l'absence de virgule dans la version actuelle) insiste simplement sur le fait que la recommandation de `` durée de vie '' s'applique à toutes les applications, ne vous ordonnant pas réellement d'utiliser le même certificat pour toutes vos applications.

Anne Gunn
la source
6
Garder des keystores séparés pour chaque application devrait être la voie à suivre!
Sufian
42

La documentation officielle nous dit:

En général, la stratégie recommandée pour tous les développeurs est de signer toutes vos applications avec le même certificat, pendant toute la durée de vie prévue de vos applications. Il y a plusieurs raisons pour lesquelles vous devriez le faire ...

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

Alors oui, essayez de signer toutes vos applications avec le même certificat.

ol_v_er
la source
8
Et pour «Alias», que dois-je écrire?
Dr.jacky
6
Pour simplifier les choses, utilisez également la même chose pour toutes vos applications.
ol_v_er
18

Je voudrais ajouter quelques éclaircissements ici, car cette question et les réponses fournies me prêtent à confusion. Il est essentiel de comprendre ce qu'est réellement un keystore.

Un keystore est juste un moyen de stocker en toute sécurité la paire de clés publique / privée qui est utilisée pour signer vos apks Android. Alors oui, vous pouvez utiliser le même keystore pour signer plusieurs apks, sans problème. Vous pouvez également utiliser le même alias (chaque alias est un certificat) pour signer plusieurs apks, et cela fonctionnera. Cela a cependant des implications en matière de sécurité. Si votre alias unique est compromis, toutes vos applications auront été compromises.

Cependant, si vous avez l'intention de vendre un jour les droits sur vos applications, utiliser le même alias pour toutes vos applications peut ne pas être une bonne idée. Cependant, utiliser le même keystore, à condition d'utiliser un alias différent pour chaque apk, n'est pas forcément une mauvaise option. Je suis sûr qu'il existe un moyen de déplacer un certificat d'un keystore à un autre, afin de pouvoir donner en toute sécurité les clés nécessaires pour ce certificat uniquement à votre acheteur.

Pour être très clair, un keystore est juste cela, un support de stockage pour les clés. Il ne joue aucun rôle réel dans le processus de signature d'un apk, mais sert uniquement à stocker les clés qui sont réellement utilisées pour signer l'apk.

Références:

Comprendre le keystore, les certificats et les alias

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

Anthony Stivers
la source
1
Veuillez ne pas publier de réponses identiques à plusieurs questions. Publiez une bonne réponse, puis votez / marquez pour fermer les autres questions comme des doublons. Si la question n'est pas un doublon, adaptez vos réponses à la question.
Paul Roub
Toutes mes excuses. Je suis un noob pour SO.
Anthony Stivers
1
Je n'ai pas assez de représentants pour voter pour un doublon. Donc, si vous souhaitez voter les questions suivantes comme des doublons, j'estime que cette question est la plus appropriée pour être la non-duplicata. Il s'agit du premier rang dans Google pour les mots-clés pertinents et a les réponses les plus pertinentes. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/... stackoverflow.com/questions/10514597/…
Anthony Stivers
Attendez! Comment puis-je utiliser le même keystore mais avec un alias différent pour chaque application?!
Ziad H.
5

Bien sûr! Vous pouvez utiliser le même fichier de clés autant de fois que vous le souhaitez. Il est toujours préférable d'utiliser le même fichier de clés pour toutes les applications que vous développez. Cela vous aidera si vous souhaitez mettre à jour ou modifier l'application. À ce moment-là, vous devez signer votre demande avec la même clé.

Rohit
la source
2

Je signe toutes mes applications en utilisant le même certificat (keystore). Cela me donne un avantage si je change d'avis et que je souhaite que mes applications partagent leurs données.

Comme vous le savez peut-être, Android identifie chaque application avec un UID. Si toutes vos applications sont signées par le même certificat, vous pouvez demander à Android d'attribuer le même identifiant d'utilisateur à plusieurs applications et de les faire fonctionner en un seul processus et de partager les données.

À partir d'android doc android: sharedUserId

android: sharedUserId

Le nom d'un ID utilisateur Linux qui sera partagé avec d'autres applications. Par défaut, Android attribue à chaque application son propre ID utilisateur unique. Cependant, si cet attribut est défini sur la même valeur pour deux applications ou plus, elles partageront toutes le même ID, à condition qu'elles soient également signées par le même certificat. L'application avec le même ID utilisateur peut accéder aux données de l'autre et, si vous le souhaitez, s'exécuter dans le même processus

Sujith
la source
1

Mise à jour récente

Si vous souhaitez vous inscrire à la signature d'applications par Google, vous devez utiliser une nouvelle clé différente pour signer votre apk ou votre bundle, sinon après le téléchargement de la console Google, vous recevrez un message d'erreur indiquant

Vous avez téléversé un fichier APK ou une collection d'applications Android qui est signé avec une clé qui est également utilisée pour signer les fichiers APK qui sont fournis aux utilisateurs. Étant donné que vous êtes inscrit à la signature d'applications par Google Play, vous devez signer votre fichier APK ou votre collection d'applications Android avec une nouvelle clé avant de l'importer.

Riya Parmar
la source
J'ai pu générer une nouvelle clé dans l'écran de signature apk du studio Android. Générez un nouveau magasin de clés et un alias et cela peut fonctionner. Cela a fonctionné pour moi.
Numan Karaaslan