2008-10-31 12 views
109

J'ai un fichier EXE que je souhaite signer pour que Windows ne prévienne pas l'utilisateur final d'une application provenant d'un "éditeur inconnu". Je ne suis pas un développeur Windows. L'application en question est un économiseur d'écran généré à partir d'une application qui génère des applications d'économiseur d'écran. En tant que tel, je n'ai aucune influence sur la façon dont le fichier est généré.Signature d'un fichier Windows EXE

J'ai déjà découvert que j'aurai besoin d'un certificat code signing d'un CA comme Verisign ou instantssl.com. Ce que je ne comprends pas, c'est ce que je dois faire (si possible) pour signer mon fichier EXE. Qu'est-ce qu'une explication simple?

La réponse de Mel Green m'a pris plus loin, mais signtool veut que je spécifie quel certificat utiliser dans tous les cas. Puis-je obtenir un certificat de signature de code gratuit pour tester si cela fonctionnera pour moi?

Veuillez également spécifier quel type de certificat est le bon. La plupart des sites mentionnent uniquement la «signature de code» et parlent de la signature des applications qui sont réellement compilées par l'utilisateur. Ce n'est pas le cas pour moi.

+0

Juste curieux - combien on doit payer pour acheter un certificat? – Ampere

Répondre

82

Vous pouvez essayer d'utiliser Microsoft's Sign Tool

Vous le télécharger dans le cadre du Windows SDK pour Windows Server 2008 et .NET 3.5. Une fois téléchargé, vous pouvez l'utiliser à partir de la ligne de commande comme ceci:

signe signtool/a monfichier.exe

Ce signe un seul exécutable. Je ne suis pas sûr du certificat utilisé.

Ou vous pouvez essayer:

signtool signwizard

Cela lancera un assistant qui vous guidera à travers la signature de votre application.


Si vous souhaitez obtenir une prise de certificat que vous pouvez utiliser pour tester votre processus de signature de l'exécutable que vous pouvez utiliser l'outil .NET Makecert.

Certificate Creation Tool (Makecert.exe)

Une fois que vous avez créé votre propre certificat et que vous avez utilisé pour signer votre exécutable, vous devrez ajouter manuellement comme une autorité de certification racine de confiance pour votre machine afin UAC pour indiquer à l'utilisateur en cours d'exécution qu'il provient d'une source fiable. Important.Installing a certificate as ROOT CA will endanger your users privacy. Look what happened with DELL. Vous pouvez trouver plus d'informations pour y parvenir à la fois dans le code et par Windows dans:

Espérons que fournit un peu plus informations pour ceux qui tentent de le faire!

+0

Un workflow de travail dans une question séparée: http://stackoverflow.com/questions/84847/how-do-i-create-a-self-signed-certificate-for-code-signing-on-windows –

+2

"Cet outil est installé automatiquement avec Visual Studio Pour exécuter l'outil, utilisez l'invite de commandes de développeur (ou l'invite de commandes Visual Studio dans Windows 7). " http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx – Westy92

17

Le magazine ASP ASPects a une description détaillée sur la façon de signer le code (vous devez être membre pour lire l'article). Vous pouvez le télécharger via http://www.asp-shareware.org/

Voici un lien vers une description comment vous pouvez make your own test certificate.

This peut aussi être intéressant.

+7

Addendum quatre ans plus tard: Comodo a été compromis au début de l'année 2012 (http://blogs.comodo.com/it-security/data-security/the-recent-ra-compromise/) et beaucoup d'utilisateurs rejettent maintenant certificats avec une autorité racine Comodo –

+7

Comodo est toujours un pari risqué à la mi-2013, et par les «agents utilisateurs», cela signifie-t-il Microsoft/Windows, car ce sont eux qui décident de montrer ce fameux message «éditeur inconnu». –

+0

Désolé, supprimé les recommandations de service explicite, qui sont 1) périmés et 2) ont été exclues du sujet maintenant (parce que 1.). – deceze

17

Vous pouvez obtenir un gratuit certificat de signature de code bon marché from Certum si vous faites le développement de code source libre.

J'utilise leur certificat depuis plus d'un an, et il se débarrasse du message éditeur inconnu de Windows.

En ce qui concerne le code de signature J'utilise signtool.exe à partir d'un script comme celui-ci:

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe 
+2

Il ne semble plus gratuit, encore moins cher, 14 € – hultqvist

+1

Vous avez raison, il ne semble plus gratuit. Je viens juste de renouveler, et je n'ai rien payé. Peut-être que je suis grand-père. Peut-être que leurs processus internes sont brisés. Leur site est sûr, c'est compliqué. –

9

Une autre option, si vous avez besoin de signer l'exécutable sur une boîte Linux est d'utiliser signcode du Mono project tools. C'est supported on Ubuntu.

+0

C'est très utile! Le paquet est également disponible dans Debian, sous le nom [mono-devel] (https://packages.debian.org/wheezy/mono-devel). – Marian

0

Référence https://steward-fu.github.io/website/driver/wdm/self_sign.htm Note: SignTool.exe de Microsoft SDK

temps 1.Premièrement (pour faire cert privé)

Makecert -r -pe - ss VotreNom YourName.cer

certmgr.exe -add YourName.cer -s -r localMachine racine

2.Après (pour ajouter votre signe à votre application)

signe signtool/s VotreNom YourApp.exe

Questions connexes