Qu'est-ce que le fichier de clés Android et à quoi sert-il?

128

C'est une question générale, mais je suis particulièrement intéressé par son utilisation pour Android. Qu'est-ce qu'un fichier keystore et à quoi sert-il?

Plusieurs applications Android peuvent-elles utiliser le même keystore pour signer leur application (que signifie exactement «signer» un .apk?), Et quelles en sont les implications (le cas échéant)?

Christopher Perry
la source
1
Vous semblez confondre deux sujets. Le premier est le keystore, et le second est la signature de l'APK. Voir également les internes de sécurité Android de Nikolay Elenkov : un guide détaillé de l'architecture de sécurité d'Android .
jww

Réponses:

130

La réponse que je fournirais est qu'un fichier keystore consiste à vous authentifier auprès de quiconque le demande. Cela ne se limite pas à la signature de fichiers .apk, vous pouvez l'utiliser pour stocker des certificats personnels, signer des données à transmettre et toute une gamme d'authentification.

En ce qui concerne ce que vous en faites pour Android et probablement ce que vous recherchez puisque vous mentionnez la signature d'apk, c'est votre certificat. Vous marquez votre application avec vos informations d'identification. Vous pouvez marquer plusieurs applications avec la même clé, en fait, il est recommandé d'utiliser un certificat pour marquer plusieurs applications que vous écrivez. Il est plus facile de savoir quelles applications vous appartiennent.

Je ne sais pas ce que vous entendez par implications. Je suppose que cela signifie que personne d'autre que le titulaire de votre certificat ne peut mettre à jour votre demande. Cela signifie que si vous le libérez dans la nature, perdez le certificat que vous avez utilisé pour signer l'application, vous ne pouvez pas publier de mises à jour, gardez ce certificat en sécurité et sauvegardé si nécessaire.

Mais en plus de signer des apks pour les publier dans la nature, vous pouvez l'utiliser pour authentifier votre appareil auprès d'un serveur via SSL si vous le souhaitez, (également lié à Android) entre autres fonctions.

Otra
la source
2
Très bonne réponse. Il faut également noter ici que vous avez besoin d'un fichier keystore si vous comptez utiliser des "push data" dans votre application!
KapteinMarshall
La machine Keystore est-elle spécifique? Ou nous pouvons l'utiliser sur n'importe quelle machine pour mettre à jour notre application ??
Yawar
7
Bonne explication. Pouvez-vous également expliquer pourquoi nous avons besoin de KeyStorePassword, Key alias, KeyPassword. Il semble redondant d'avoir trois clés.
ARK
18

Android Market vous oblige à signer toutes les applications que vous publiez avec un certificat, à l'aide d'un mécanisme de clé publique / privée (le certificat est signé avec votre clé privée). Cela fournit une couche de sécurité qui empêche, entre autres, les attaquants distants de pousser des mises à jour malveillantes vers votre application sur le marché (toutes les mises à jour doivent être signées avec la même clé).

À partir du guide de signature d'applications du site du développeur Android:

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, tout au long de la durée de vie prévue de vos applications. Il y a plusieurs raisons pour lesquelles vous devriez le faire ...

L'utilisation de la même clé présente quelques avantages: le premier est qu'il est plus facile de partager des données entre des applications signées avec la même clé. Un autre est qu'il permet à plusieurs applications signées avec la même clé de s'exécuter dans le même processus, de sorte qu'un développeur peut créer des applications plus «modulaires».

Alexandre Lucas
la source
10

Vous pouvez trouver plus d'informations sur le processus de signature dans la documentation officielle d'Android ici: http://developer.android.com/guide/publishing/app-signing.html

Oui, vous pouvez signer plusieurs applications avec le même keystore. Mais vous devez vous rappeler une chose importante: si vous publiez une application sur le Play Store, vous devez la signer avec un certificat sans débogage. Et si un jour vous souhaitez publier une mise à jour pour cette application, le keystore utilisé pour signer l'apk doit être le même. Sinon, vous ne pourrez pas publier votre mise à jour.

Raphaël Titol
la source
Non, c'est faux. Le keystore que vous utilisez pour signer l'apk peut être différent, mais la clé que vous utilisez pour signer l'apk doit être la même. Le fichier keystore est juste un fichier qui sert à stocker la clé et l'imformation de certificat, vous pouvez avoir plusieurs entités clés dans le même fichier keystore.
zeleven le
0

L'idée même d'un keytool est de signer votre apk avec un identifiant unique indiquant la source de cet apk. Un fichier keystore (d'après ce que je comprends) est utilisé pour le débogage afin que votre apk ait la fonctionnalité d'un keytool sans signer votre apk pour la production. Alors oui, à des fins de débogage, vous devriez pouvoir signer plusieurs apk avec un seul keystore. Mais comprenez que, lors de la mise en production, vous aurez besoin d'outils clés uniques comme identifiants pour chaque apk que vous créez.

Adam Storm
la source
Vous n'avez pas besoin de signer une application pour la déboguer, que ce soit dans l'émulateur ou sur un appareil réel.
Marcus
Je ne voulais pas dire que vous DEVEZ le signer pour le déboguer ... mais vous pouvez utiliser le keystore comme implémentation de test de votre keytool.
Adam Storm
Je ne pense pas que keytoolce que tu veux dire. keytool est un programme java utilisé pour générer des keystores.
Otra le
oui vous avez raison, keytool n'est pas ce que je veux dire. Je suppose que «clé» est ce que je veux dire. J'essayais simplement d'expliquer au demandeur que vous pouvez avoir une clé apk commune pour le débogage, mais lors de la publication, chaque apk devra avoir des clés uniques pour l'édition et la mise à niveau.
Adam Storm
Cependant, ils n'ont pas besoin de clés uniques ... vous pouvez signer plusieurs apk avec une clé privée, il est en fait préférable de le faire. Pouvez-vous imaginer garder une trace de 10 certificats / clés différents pour 10 applications?
Otra