Signer son application .Net avec un certificat Authenticode

Signer son application .Net avec un certificat Authenticode

 

Depuis Windows Vista, une application qui n’est pas signée, téléchargée sur le Web, provoquera une alerte de sécurité.

Cela pénalise donc votre application car l’utilisateur aura une alerte de sécurité de la part de Windows. Politique de Microsoft pour relancer la vente de Certificats comme certains le prétendent ou simplement volonté de l’éditeur de renforcer la sécurité au maximum… Il est ainsi préférable de signer vos applications avec un certificat.

 

1) Obtenir un certificat

 

Pour cela vous devrez vous tourner vers un organisme tel Verisign, GlobalSign, Comodo…

La plupart des organismes proposent des tarifs très avantageux (à partir de 100$ / an) si vous souhaitez un certificat à titre individuel. Cependant pour une entreprise il faudra sortir un peu plus. De 200$ à 500$ pour une année, des remises sont proposées pour la souscription sur 2 ou 3 ans.

Après avoir choisi une autorité de certification, vous devrez compléter un formulaire en ligne et fournir un maximum d’informations sur votre identité ou celle de votre entreprise. Adresse, numéro de téléphone, numéro d’inscription au RCS, numéro de TVA, etc… Vous devrez également choisir un mot de passe pour votre compte et aussi pour votre certificat. A ne pas perdre ! Vraiment pas, à moins de vouloir griller votre certificat. Même si généralement, les organismes vous permettent de recréer un certificat en cas d’oublis, et il ne le feront pas forcément 10 fois de suite.

L’organisme que vous solliciterez prendra quelques jours (3 à 7) pour vérifier votre identité. Ils ont cette obligation bien évidemment.

Pour un particulier, vous devrez adresser des documents justifiant qui vous êtes : Passeport, carte d’Identité, Permis de Conduire etc…

Pour une entreprise, il y aura forcément une prise de contact par téléphone et vous devrez fournir un numéro de téléphone référencé dans un annuaire public (pages jaunes par exemple…), sinon une facture de téléphone stipulant votre numéro, les coordonnées de l’entreprise seront demandé. Et sinon enfin, si vous ne pouvez pas justifier de ce numéro de téléphone, un courrier d’un « homme de loi » (avocat, huissier, comptable…) attestant que le numéro vous appartient sera aussi demandé.

Les vérifications réalisées, vous pourrez télécharger le certificat PFX sur le site Web de l’organisme sélectionné. Vous devrez vous rappeler de vos mots de passe !

 

2) Utilisation du certificat

 

Le certificat pfx désormais copié sur votre ordinateur, vous pouvez l’utiliser pour signer vos Assemblies. Et pour cela vous aurez besoin de l’utilisateir signtool.exe de Microsoft. Si cet utilitaire a été distribué avec plusieurs éditions de Visual Studio, dans les dernières versions depuis la 2008, ce n’est plus le cas ! Et il est donc probable que signtool.exe soit absent de votre ordinateur. Vous devrez dans ce cas télécharger le SDK Windows ici et procéder à l’installation des utilitaires .NET. Vous voilà équipé de l’indispensable !

Vous pouvez signer votre application en ligne de commandes MS-DOS :

[CheminVersSigntool]signtool.exe sign /t [UrlTimeStamp] /f [CheminVersCertificatPFX] /p [MotDePasseCertificatPFX] [CheminAssemblyASigner]

exemple :

« c:program filesmicrosoft sdkswindowsv7.1binsigntool.exe » sign /t http://timestamp.globalsign.com/scripts/timestamp.dll  /f « c:certificats124ARI.pfx » /p password « c:projetsMonProjetbinReleaseMonProgramme.exe »

L’URL de serveur Time Stamp permet de dater la signature. C’est un horodatage indispensable.

On peut signer de cette façon, EXE, DLL, SETUP…

 

3) Signature automatique pendant le Build avec Visual Studio 2010

 

Il est possible de faire procéder à la signature des programmes générés pendant la compilation avec Visual Studio. Cela vous assurera de ne jamais oublier de signer les assemblys qui doivent l’être.

 

Pour un projet (DLL, EXE autre) :

Dans l’Explorateur de Solutions, clic Droit sur le projet concerné et clic sur Propriétés.

Dans le menu de gauche de la fenêtre ouverte, cliquez sur Signature et décochez []Signer les manigestes ClickOnce.

Dans le menu de gauche, cliquez sur Evénements de build et ajoutez dans la zone de texte Ligne de commande de l’événement Post-Build la ligne de commande vu précédemment en (2) en l’adaptant un peu :

[CheminVersSigntool]signtool.exe sign /t [UrlTimeStamp] /f [CheminVersCertificatPFX] /p [MotDePasseCertificatPFX] « $(TargetPath) »

exemple :

« c:program filesmicrosoft sdkswindowsv7.1binsigntool.exe » sign /t http://timestamp.globalsign.com/scripts/timestamp.dll  /f « c:certificats124ARI.pfx » /p password « $(TargetPath) »

A chaque compilation, votre fichier de sortie sera signé.

Pour un projet de SETUP :

Dans l’Explorateur de Solutions, clic gauche sur le projet de Setup. Dans les Propriétés du projet (fenêtre de propriétés traditionnelle), vous verrez le paramètre PreBuildEvent. Cliquez sur le bouton … pour faire apparaître une fenêtre de saisie acceptable et saisir comme précédemment, l’instruction de signature un peu adaptée :

[CheminVersSigntool]signtool.exe sign /t [UrlTimeStamp] /f [CheminVersCertificatPFX] /p [MotDePasseCertificatPFX] /d « Description obligatoire – (c)MonEntreprise » « $(BuiltOuputPath) »   (et oui c’est bien BuiltOuputPath avec Ouput et non pas Output !)

exemple :

« c:program filesmicrosoft sdkswindowsv7.1binsigntool.exe » sign /t http://timestamp.globalsign.com/scripts/timestamp.dll  /f « c:certificats124ARI.pfx » /p password /d « Description obligatoire – (c)MonEntreprise » « $(BuiltOuputPath) »

Le /d « description » est nécessaire pour le setup, sans quoi votre setup afficherait un nom aléatoire au moment de l’installation et ce ne sera pas très appréciable.

 

4) Conclusion

 

Pour conclure : il est finalement simple de générer des applications signées authentifiées et donc d’apporter plus de sécurité aux utilisateurs. Certes, cela a un coût, mais si vous distribuez des applications vous n’avez plus vraiment la possibilité de vous passer de ces certificats qui permettent simplement à un utilisateur de votre application d’avoir la quasi certitude que vous en êtes bien l’auteur. Si cela peut sembler inutile, en y réfléchissant bien, c’est plutôt très pratique.

 

Auteur: Alain BELUT

 

En réagissant à cet article, vous nous permettez d'affiner les contenus que nous publions ici !

  • Awesome (1)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

Si cet article vous a plu, n’hésitez pas à le partager via

Ces articles peuvent également vous intéresser