web-dev-qa-db-fra.com

Comprendre le magasin de clés, les certificats et les alias

Le fichier de clés est-il le certificat réel ou l'alias est-il le certificat?

Si j'utilise un autre alias pour signer mon application, cela va-t-il gâcher les mises à jour sur le marché? Ou devrais-je signer mon application avec un magasin de clés différent pour tout gâcher? Et d'où sont les informations sous alias visible?

94
Roger

Le fichier de clés généré par Keytool stocke les paires de clés privées et publiques. Chaque paire ou entrée stockée dans le magasin de clés est référencée par un alias unique. En bref:

Entrée du magasin de clés = paire clé privée + clé publique = identifiée par un alias

Le magasin de clés protège chaque clé privée avec son mot de passe individuel, ainsi que l'intégrité de tout le magasin de clés avec un mot de passe (éventuellement différent).

Par exemple, lorsque vous vous connectez à une application Android à l'aide de l'option Exporter le package d'application signé de l'outil Eclipse Android, vous êtes invité à sélectionner un magasin de clés, puis Après avoir fourni les mots de passe du magasin de clés et de l'alias choisi, l'application est signée et la clé publique (le certificat) de cet alias est intégrée au fichier APK.

Maintenant, pour répondre à votre question, vous ne pouvez publier une mise à jour que pour une application qui a été signée avec l’alias "foo" en signant à nouveau la mise à jour avec le même alias. La perte du fichier de clés dans lequel votre alias est stocké vous empêcherait de publier une version mise à jour de votre application.

Il existe cependant un moyen de signer une application avec un nouvel alias, mais cela implique de cloner un alias existant dans le magasin de clés en utilisant keytool -keyclone:

Crée une nouvelle entrée de fichier de clés, qui a la même clé privée et la même chaîne de certificats que l'entrée d'origine.

L'entrée d'origine est identifiée par un alias (la valeur par défaut de "mykey" si non fournie). La nouvelle entrée (destination) est identifiée par dest_alias. Si aucun alias de destination n'est fourni sur la ligne de commande, l'utilisateur est invité à le saisir.

Si le mot de passe de la clé privée est différent du mot de passe du fichier de clés, l'entrée ne sera clonée que si un passe-clé valide est fourni. C'est le mot de passe utilisé pour protéger la clé privée associée à alias. Si aucun mot de passe de clé n'est fourni sur la ligne de commande et que le mot de passe de clé privée est différent du mot de passe du magasin de clés, l'utilisateur est invité à le saisir. La clé privée dans l'entrée clonée peut être protégée par un mot de passe différent, si vous le souhaitez. Si aucune option -new n'est fournie sur la ligne de commande, l'utilisateur est invité à saisir le mot de passe de la nouvelle entrée (et peut choisir de le laisser identique à celui de la clé privée de l'entrée clonée).

Plus d'information:

http://download.Oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.Android.com/guide/publishing/app-signing.html

126
Julio Gorgé