Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Signer une extension

Voici quelques ressources pour savoir signer une extension. L'avantage de signer une extension est de permettre de certifier l'origine d'une extension (et accessoirement, d'éviter lors de l'installation de celle-ci, l'affichage du message en rouge indiquant que le xpi est non signé ;-) ). Pour cela, il vous faut avant tout un certificat validé auprés d'une autorité de certification comme Verisign.

A noter l'existence d'un autre tutoriel en anglais : http://www.mozdevgroup.com/docs/pete/Sig(..)

Et d'un autre dans le livre Creating Application With Mozilla : http://books.mozdev.org/html/mozilla-chp(..)

Tutoriel

Toute la procédure de création/gestion/utilisation des certificats est indiquée sur SignerUneAppli .

Mais il s'avère que, même en suivant cette procédure à la lettre pour signer votre xpi, firefox/mozilla s'évertuera à ne pas reconnaître cette signature.

En effet, il faut que le fichier META-INF/zigbert.rsa, généré par la procédure de signature, soit le premier fichier du package xpi. Pour ce faire, il ne faut pas faire la signature ET le xpi en une seule fois (option -Z de signtool).

Il faut au contraire, dans l'ordre suivant :

  • signer d'abord le répertoire source du package xpi,
  • créer le xpi en y plaçant seulement le fichier META-INF/zigbert.rsa
  • y ajouter tous les autres fichiers.

Démonstration par l'exemple, sous Linux, en ligne de commande :

Soit monExt le nom de votre extension, et supposons que votre xpi doive contenir le strict minimum, c'est à dire chrome/monExt.jar (Je rappelle que pour les dernières versions de firefox, monExt.jar doit impérativement se trouver dans le répertoire chrome) et install.rdf.

Vous avez donc l'arborescence très simple ci-dessous :

 /le/chemin/monExt/install.rdf
 /le/chemin/monExt/chrome/monExt.jar

vous vous placez dans le répertoire père du répertoire à signer :

 cd /le/chemin

signez ce répertoire par la commande habituelle :

 signtool -d /le_chemin_du_certificat -k "nom_du_certificat" -p "passwd" monExt/

la signature va créer le répertoire monExt/META-INF/ contenant les fichiers :

  • manifest.mf
  • zigbert.rsa
  • zigbert.sf

vous vous placez dans le répertoire monExt/ et créez le xpi avec le premier fichier à y placer :

 cd monExt/
 zip ../monExt.xpi META-INF/zigbert.rsa

vous y rajoutez tous les autres fichiers (en excluant le premier déjà placé) :

 zip -r -D ../monExt.xpi * -x META-INF/zigbert.rsa
 cd ..

Ça y est, votre package /le/chemin/monExt.xpi est signé, et cette signature sera reconnue par firefox/mozilla à son installation.

Bien entendu, il faut ensuite que l'autorité de certification soit connue de votre navigateur, que le certificat soit valide etc... pour que l'extension s'installe effectivement.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.