Comment signer officiellement votre code ?
En clair que Windows vous reconnaisse comme étant un EDITEUR sérieux. Et ainsi éviter le fameux message : Windows n’a pu identifier l’éditeur de ce programme, voulez-vous quand même l’installer ? L’utilitaire nécessaire pour signer un fichier est SignTool.exe (anciennement SignCode.exe). Il se trouve normalement dans Program FilesMicrosoft SDKsWindowsvXXXXbin et aussi dans votre installation de Visual Studio… En fait il est un peu partout… Faites une recherche de signtool.exe sur votre ordinateur et utilisez le plus récent 🙂 Le but est de signer notre application avec un certificat…
Quel Certificat ??! Je le trouve où ?
Exclusivement pour des tests on peut utiliser MakeCert.exe pour générer un certificat et une clé publique. Syntaxe en ligne de commandes : http://msdn.microsoft.com/fr-fr/library/bfsktky3(VS.80).aspx
Exemple : makecert -r -sv MonCertificat.pvk -n « CN=MonCertificat » -b 01/01/2010 -e 31/12/2010 MonCertificat.cer
-r : pour créer un certificat auto-signé. -sv : pour spécifier le fichier de clé privée à créer. -n : pour spécifier le nom du certificat en respectant la norme X500 (les personnes qui connaissent LDAP/ACTIVE DIRECTORY n’auront pas de soucis 🙂 ) -b : date de début de validité -e : date de fin de validité et enfin, précédé d’aucun code option, le nom du fichier de Certificat.
Un vrai Certificat comme les pros
Pour faire les choses sérieusement, il faudra demander votre certificat officiel auprès de Thawte ou Verisign ou autre organisme qualifié. Lorsque vous achetez un certificat vous recevez un fichier PKV + un fichier CER.
J’ai mon Certificat (le vrai ou celui de test), je fais quoi maintenant ?
Il faut convertir le fichier CER en fichier SPC. En fait, convertir le Certificat (.CER) en Software Publisher Certificate (.SPC) Et pour cela on utilise l’utilitaire : cert2spc.exe
comme ceci : cert2spc.exe MonCertificat.cer MonCertificat.spc
Le problème c’est que SignTool.exe attend un certificat au format PFX. (c’est pas simple hein…) Pour cela on utilise l’utilitaire pvk2pfx.exe qui va générer un fichier PFX à partir du CERTIFICAT (fichier .SPC) et de la CLE PRIVEE (fichier .PKV)
comme ceci : pvk2pfx.exe -pvk MonCertificat.pvk -pi <MotDePasse> -spc MonCertificat.spc -pfx MonCertificat.pfx -po <MotDePasse> A partir de la clé publique (.pvk) et du certificat de l’éditeur (.spc), un fichier MonCertificat PFX est généré 🙂 Le mot de passe, c’est vous qui l’inventez… 🙂
La signature pour de bon
Pour signer notre assembly, exe, ou n’importe quoi, il suffit d’utiliser signtool.exe : signtool.exe sign /f MonCertificat.pfx /p <MotDePasse> /t <URL Horodateur> /v MonAssembly.dll
exemple URL d’horodateurs : – http://timestamp.verisign.com/scripts/timstamp.dll …
Vous pouvez également utiliser signtool.exe avec l’assistant graphique Windows (plutôt qu’en ligne de commandes).
Pour se faire exécutez le avec le paramètre signwizard (signtool.exe signwizard)
En résumé : Pour certifier un projet (Assembly, Exe…)
1) Un certificat est constitué de 2 fichiers. Un fichier de certificat (.CER ou .SPC) + une clé privée (.PVK)
2) Avoir un certificat. On peut générer un certificat de test avec MakeCert.exe, mais il faudra en acheter un chez une autorité qualifié comme Verisign.
3) Convertir le certificat .CER en certificat éditeur : .SPC avec CERT2SPC.EXE
4) Générer un fichier PFX à partir du certificat éditeur et de la clé privée avec l’utilitaire PVK2PFX.EXE
5) Signer le fichier cible avec SIGNTOOL.EXE en lui spécifiant le fichier PFX et une URL d’un horodateur.
Source : Alain BELUT