Signer une application Android

Avant de pouvoir publier une application Android il faut qu’elle soit signée avec un certificat auto signé. Nous allons voir 2 méthodes permettant de générer un certificat auto signé et de signer une application Android.

Génération du certificat depuis Eclipse

Faites un clic droit sur votre projet et allez dans le menu “Android Tools” puis “Export Signed Application Package…”.

Une fenêtre s’ouvre : Générer certificat depuis Eclipse étape 1

Si aucune erreur n’est détectée dans votre projet alors le bouton Next sera accessible sinon vous devrez d’abord les corriger avant de poursuivre. S’il est disponible, cliquez sur le bouton Next.

Dans la fenêtre suivante sélectionnez Create new keystore et saisissez un mot de passe de 6 caractères minimum.[Tuto - Signer Application] -

Cliquez sur Next. Vous devez maintenant renseigner différentes informations pour la génération du certificat :

  • Alias : nom de la clé
  • Password : vous devez absolument garder précieusement ce mot de passe et il doit comporter au moins 6 caractères.
  • Confirm : saisir à nouveau le mot de passe
  • Validity : durée de validité du certificat en année. Android préconise une durée de validité de 25 ans
  • Firs and Last Name : entrez simplement votre nom et votre prénom
  • Organizational Unit : le nom du service de votre entreprise
  • Organization : le nom de votre entreprise
  • City or Locality : le nom de votre ville
  • State or Province : le nom de votre région
  • Country Code : pour la France le code est FR

Générer certificat depuis Eclipse étape 3

Cliquez sur Next.

Spécifiez le chemin de destination de l’APK et cliquez sur Finish.

Destination de l'APK

Une fois fait vous trouverez votre APK signé ainsi que le keystore qui a permis de signer l’application à l’endroit que vous avez spécifié.

Il est important de conserver précieusement le certificat ainsi que son mot de passe.Si vous devez faire une mise à jour de votre application vous devrez obligatoirement la signer avec le même certificat que vous avez utilisé pour signer la version précédente. Si vous ne le faites pas, la nouvelle version de l’application sera considérée comme une application différente et vos utilisateurs ne verront pas la mise à jour.

Signature de l’application depuis Eclipse avec le certificat auto signé

Dans Eclipse faites un clic droit sur votre projet et allez dans le menu “Android Tools” puis “Export Signed Application Package…”.

Une fenêtre s’ouvre :

 Signature de l'application étape 1

Si aucune erreur n’est détectée dans votre projet alors le bouton Next sera accessible sinon vous devrez d’abord les corriger avant de poursuivre. S’il est disponible, cliquez sur le bouton Next.

Dans la fenêtre suivante sélectionnez Use existing keystore puis sélectionnez le keystore généré précédemment et saisissez le mot de passe du fichier de clés :

Signature de l'application étape 2

Cliquez sur Next.

Sélectionnez Use existing key, sélectionnez l’alias et saisissez le mot de passe de la clé et cliquez ensuite sur Next.Signature de l'application étape 3

Spécifiez le chemin de destination de l’APK et cliquez sur Finish.

Signature de l'application étape 4

Une fois fait vous trouverez votre APK signé à l’endroit que vous avez spécifié.

Génération du certificat en ligne de commande

Ouvrez une fenêtre de commande et tapez keytool puis entrée. Si la commande est inconnue alors ouvrez la fenêtre de commande sur le dossier bin de votre jdk. Par défaut le chemin est : C:Program Files (x86)Javajdk1.7.0_05bin. Saisissez la commande suivante dans la console puis appuyez sur entrée:

keytool -genkey -alias <alias> -keyalg RSA -keystore <nom_du_keystore.keystore> -keysize 2048 -validity <duree_de_validite>
  • <alias> : nom de la clé
  • <nom_du_keystore.keystore> : nom du keystore généré
  • <duree_de_validite> : durée de validité du certificat en jour. Android préconise une durée de validité de 25 ans soit environ 9200 jours.

Voici par exemple ce que donne cette commande pour la génération de mon certificat :

keytool -genkey -alias android-infinitestudio -keyalg RSA -keystore infinitestudio.keystore -keysize 2048 -validity 10000

Ensuite plusieurs questions vous seront posées :

  • Entrez le mot de passe du fichier de clés : vous devez absolument garder précieusement ce mot de passe et il doit comporter au moins 6 caractères.
  • Ressaisissez le nouveau mot de passe : saisir à nouveau le mot de passe
  • Quels sont vos nom et prénom : entrez simplement votre nom et votre prénom
  • Quel est le nom de votre unité organisationnelle : le nom du service de votre entreprise
  • Quel est le nom de votre entreprise : le nom de votre entreprise
  • Quel est le nom de votre ville de résidence : le nom de votre ville
  • Quel est le nom de votre état ou province : le nom de votre région
  • Quel est le code pays à deux lettres pour cette unité : pour la France le code est FR
  • Est-ce… : si les informations que vous avez saisies sont correctes confirmez par oui
  • Entrez le mot de passe de la clé pour <alias> : si vous voulez utiliser le même mot de passe que pour le fichier de clés alors appuyez simplement sur entrée sinon saisissez le mot de passe et ressaisissez le ensuite pour terminer la création du keystore.

Un fichier <nom_du_keystore.keystore> est apparu à l’endroit où vous avez ouvert la fenêtre de commande.

Comme précédemment il est important de sauvegarder ce fichier dans un endroit sûr.

Signature de l’application en ligne de commande

Ouvrez une fenêtre de commande et tapez jarsigner puis entrée. Si la commande est inconnue alors ouvrez la fenêtre de commande sur le dossier bin de votre jdk. Par défaut le chemin est : C:Program Files (x86)Javajdk1.7.0_05bin. Si vous utilisez une version de Java différente de la version 7 alors saisissez la commande suivante puis appuyez sur entrée:

jarsigner -verbose -keystore <nom_du_keystore.keystore> <nom_apk.apk> <alias>

sinon utilisez cette commande :

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <nom_du_keystore.keystore> <nom_apk.apk> <alias>
  • <nom_du_keystore.keystore> : nom du keystore utilisé pour signer l’application
  • <nom_apk.apk> : nom de l’apk à signer
  • <alias> : nom de la clé.

Voici par exemple ce que donne cette commande pour la signature de mon application :

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore infinitestudio.keystore TutoGeolocalisation.apk android-infinitestudio

On vous demande ensuite de saisir le mot de passe du keystore. Une fois fait nous allons vérfifier que l’APK est bien signé à l’aide de cette commande :

jarsigner -verify <nom_apk.apk>
  • <nom_apk.apk> : nom de l’apk à vérifier

Si le résultat de la commande est “jar verified” alors votre application est correctement signée.

Pour obtenir plus de détails lors de la vérification on pourra rajouter les paramètres -verbose et -certs :

jarsigner -verify -verbose -certs <nom_apk.apk>

Le paramètre -certs vous permettra de vérifier le CN du certificat. Si le CN est égal à “Android Debug” alors vous avez signé votre application avec le “debug certificate” au lieu du “release certificate“.

Partager cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *