297 votes

Signature d'un fichier Windows exe

J'ai un fichier exe que je voudrais signer afin 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é par une application qui génère des économiseurs d'écran. En tant que tel, je n'ai aucune influence sur la façon dont le fichier est généré.

J'ai déjà découvert que j'aurai besoin d'un certificat de signature de code d'une AC comme VeriSign ou instantssl.com. Ce que je ne comprends pas, c'est ce que je dois faire (si c'est possible) pour signer mon fichier exe. Une explication simple pour les personnes lentes comme moi serait très appréciée. Merci !

Mise à jour : La réponse de Mel Green m'a emmené plus loin, mais signtool veut que je spécifie quel cert à utiliser dans tous les cas. Deux questions :

  1. Puis-je obtenir un certificat de signature de code gratuit pour tester si cela fonctionne pour moi ?

  2. Avez-vous une source bon marché pour le certificat SSL approprié ? Le moins cher que j'ai pu trouver est le suivant ce produit de instantssl.com qui coûte environ 179 dollars par an. Existe-t-il des offres à environ 100 $ ?
    Veuillez également préciser quel type de certificat est le bon. La plupart des sites ne mentionnent que la "signature de code" et parlent de la signature des applications qui sont effectivement compilées par l'utilisateur. Ce n'est pas le cas pour moi.

Encore une fois, merci beaucoup pour vos idées !

185voto

Mel Green Points 1450

Vous pouvez essayer d'utiliser l'outil de signature de Microsoft :

http://msdn.microsoft.com/en-us/library/aa387764.aspx

Vous le téléchargez en tant que partie du SDK Windows pour Windows Server 2008 et .Net 3.5. Une fois téléchargé, vous pouvez l'utiliser à partir de la ligne de commande comme suit :

signtool sign /a MonFichier.exe

Cela signe un seul exécutable. Je ne suis pas sûr du certificat qu'il utilise.

Ou vous pouvez essayer :

signtool signwizard

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


Mise à jour : Je sais que cela fait un moment, mais j'ai passé en revue certaines de mes réponses et j'ai pensé que je pourrais essayer d'offrir plus de conseils. Peut-être que tu peux encore l'utiliser, peut-être pas.

Si vous souhaitez obtenir un certificat que vous pouvez utiliser pour tester votre processus de signature de l'exécutable, vous pouvez utiliser l'outil .Net. Makecert .

Outil de création de certificats (Makecert.exe)

Une fois que vous avez créé votre propre certificat et que vous l'avez utilisé pour signer votre exécutable, vous devrez l'ajouter manuellement comme autorité de certification racine de confiance pour votre machine afin que l'UAC indique à l'utilisateur qui l'exécute qu'il provient d'une source de confiance. Vous trouverez plus d'informations sur la façon d'accomplir cette tâche à la fois dans le code et sous Windows ici :

Installer des certificats dans le magasin de certificats de l'utilisateur local de Windows en C#

Installation d'un certificat auto-signé comme AC racine de confiance dans Windows Vista

J'espère que cela fournira des informations supplémentaires à tous ceux qui tenteront de le faire !

93voto

Erick Castrillo Points 675

J'ai eu le même scénario dans mon travail et voici nos conclusions

La première chose que vous devez faire est obtenir le certificat et l'installer sur votre ordinateur, vous pouvez soit en acheter un auprès d'une Autorité de certification ou en générer un en utilisant makeecert .

Voici les avantages et les inconvénients de ces deux options.

Acheter un certificat

  • Pour
    • L'utilisation d'un certificat émis par une autorité de certification (CA) permettra de garantit que Windows ne préviendra pas l'utilisateur final d'une application provenant d'un "éditeur inconnu" sur un ordinateur utilisant le certificat. d'un "éditeur inconnu" sur un ordinateur utilisant le certificat de l'autorité de certification. de l'autorité de certification (le système d'exploitation est normalement fourni avec les certificats racine de plusieurs autorités de certification). CA)
  • Cons :

Générer un certificat à l'aide de Makecert

  • Pour :
    • Les étapes sont simples et vous pouvez partager le certificat avec les utilisateurs finaux.
  • Cons :
    • Les utilisateurs finaux devront installer manuellement le certificat sur leurs machines et, selon vos clients, cela peut ne pas être une option.
    • Les certificats générés avec makecert sont normalement utilisés pour le développement et les tests, et non pour la production.

Signer le fichier exécutable

Il y a deux façons de signer le fichier que vous voulez :

  • Utilisation d'un certificat installé sur l'ordinateur

    signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"

    • Dans cet exemple, nous utilisons un certificat stocké dans le dossier Personnel avec une empreinte SHA1 (cette empreinte provient du certificat) pour signer le fichier situé à l'adresse suivante C:\filename.dll
  • Utilisation d'un fichier de certificat

    signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"

    • Dans cet exemple, nous utilisons le certificat c:\path\to\mycert.pfx avec le mot de passe pfxpassword pour signer le fichier c:\path\to\file.exe

Testez votre signature

  • Méthode 1 : Utilisation de signtool

    Allez-y : Démarrer > Exécuter
    Type CMD > Cliquez OK
    À l'invite de commande, entrez dans le répertoire où signtool existe
    Exécutez ce qui suit :

    signtool.exe verify /pa /v "C:\filename.dll"

  • Méthode 2 : Utilisation de Windows

    Cliquez avec le bouton droit de la souris sur le fichier signé
    Sélectionnez Propriétés
    Sélectionnez le Signatures numériques onglet. La signature sera affichée dans le Liste de signatures section.

J'espère que cela pourra vous aider

Sources :

45voto

Lee Richardson Points 810

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

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

Pour ce qui est de la signature du code, j'utilise signtool.exe à partir d'un script comme ceci :

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

20voto

Altar Points 5284

Ce n'est pas une réponse directe à la question, mais c'est étroitement lié (et utile j'espère) puisque tôt ou tard, tout programmeur individuel aura mis la main au porte-monnaie.

Ainsi, les prix des certificats de signature de code EV (Extended Validation), triés par prix :

A propos deSSL
240 $/an (prix du clickbait)
287 $/an (prix réel, après coupon)

KSoftware.net
1 an 350 $ + (50 $ de frais cachés !)
2 ans 600
3 ans 750
(VO : 84 $ par an)
J'ai acheté chez eux. L'eToken a été envoyé sur une clé USB. Pas besoin de lecteur. Ils ne sont que des intermédiaires. Au final, vous achetez réellement à Comodo (Sectigo). Ils sont très lents (probablement à cause de l'intermédiaire) !

Sklep.certum.pl
1 an 379 euros
(semble être pour les utilisateurs polonais seulement)

LeaderSsl.de
1 an 364 euros ou 307 euros (+19%TVA)
(OV 69+TVA)

Sectigo.com
1 an $499 USD
3 ans $897 USD

GlobalSign.com
1 an 410 $ au total
2 ans 760 $ au total
3 ans 950 $ au total

Digicert.com
1 an : 600 $ (il était de 104 $)
3 Année : ?

symantec.com
1 an : 700
3 ans : prix ridicule

Plus de prix ici :
cheapsslsecurity.com CodeSigning EV
cheapsslsecurity.com SSL seulement !


EV vs OV

Avec EV, neuf étapes supplémentaires sont requises, notamment la vérification du numéro de téléphone public d'une entreprise, de l'ancienneté de l'entreprise, du numéro d'enregistrement et de la juridiction, ainsi qu'une vérification de la fraude de domaine, une vérification de la liste noire des contacts et un appel téléphonique pour authentifier le statut d'emploi du demandeur.

Quelques recommande de soumettre un programme signé avec OV à Microsoft pour qu'il soit vérifié avec leur antivirus.


SI VOUS TROUVEZ DES PRIX MOINS CHERS, faites-le moi savoir, et je mettrai la liste à jour !

18voto

mozey Points 122

Une autre option, si vous devez signer l'exécutable sur une boîte Linux, est d'utiliser code du signe de la Outils de projet Mono . Es supporté sur Ubuntu .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X