J'ai un fichier EXE que je voudrais 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 manière dont le fichier est généré.
J'ai déjà découvert qu'il me faudrait un signature de code certificat 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 gratuitement un certificat de signature de code pour vérifier 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 réellement compilées par l'utilisateur. Ce n'est pas le cas pour moi.
Vous pouvez essayer d'utiliser Microsoft's Sign Tool
Vous le téléchargez dans le cadre du Kit de développement logiciel (SDK) Windows pour Windows Server 2008 et .NET 3.5. Une fois téléchargé, vous pouvez l'utiliser depuis la ligne de commande comme ceci:
signtool sign/un fichier MyFile.exe
Cela signe un seul exécutable, en utilisant le "meilleur certificat" disponible. (Si vous n'avez pas de certificat, un message d'erreur SignTool s'affichera.)
Ou vous pouvez essayer:
signtool
Cela lancera un assistant qui vous guidera tout au long de la signature de votre application. (Cette option n'est plus disponible après Windows SDK 7.0.)
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 certificat (Makecert.exe)
Une fois que vous avez créé votre propre certificat et que vous l’avez utilisé pour signer votre fichier exécutable, vous devez l’ajouter manuellement en tant qu’autorité de certification racine approuvée pour votre ordinateur afin: UAC pour indiquer à l'utilisateur qui l'exécute qu'il provient d'une source fiable. Important . L'installation d'un certificat en tant qu'autorité fondamentale CA mettra en péril la confidentialité de vos utilisateurs. Découvrez ce qui s'est passé avec Dell. Vous pouvez trouver plus d'informations à ce sujet dans le code et via Windows dans:
Stack Overflow question Installer les certificats dans le magasin de certificats de l'utilisateur Windows en C #
Espérons que cela fournisse quelques informations supplémentaires à quiconque tentera de le faire!
Vous pouvez obtenir un libre 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 cela élimine le message de l'éditeur inconnu de Windows.
En ce qui concerne la signature de code, 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
ASPects, le magazine de l'ASP, contient une description détaillée de la procédure à suivre pour 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 faire votre propre certificat de test .
This pourrait aussi être intéressant.
J'ai eu le même scénario dans mon travail et voici nos conclusions
La première chose à faire est d’obtenir le certificat et de l’installer sur votre ordinateur. Vous pouvez en acheter un auprès d’un Autorité de certification ou en générer une en utilisant makecert .
Voici le pour et le contre des 2 options
Acheter un certificat
Générez un certificat en utilisant Makecert
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 signer/a/s MY/sha1 sha1_thumbprint_value/t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\nom_fichier.dll"
Utiliser un fichier de certificat
signtool sign/tr http://timestamp.digicert.com /td sha256/fd sha256/f "c:\chemin\vers\mycert.pfx"/p pfxpassword "c:\path\to\file.exe "
Testez votre signature
Méthode 1: Utilisation de signtool
Allez à: Démarrer> Exécuter, tapez CMD> cliquez sur OK. À l'invite de commande, entrez le répertoire dans lequel se trouve signtool. Exécutez les opérations suivantes:
signtool.exe verify/pa/v "C:\filename.dll"
Méthode 2: Utiliser Windows
Cliquez avec le bouton droit sur le fichier signé. Sélectionnez Propriétés. Sélectionnez l’onglet Signatures numériques. La signature sera affichée dans la section Liste des signatures.
J'espère que cela pourrait vous aider
Sources:
Une autre option, si vous devez signer le fichier exécutable sur une machine Linux, consiste à utiliser le code de signe à partir de outils de projet Mono . C'est supporté sur Ubunt .
Référence https://steward-fu.github.io/website/driver/wdm/self_sign.htm Remarque: signtool.exe de Microsoft SDK
1. première fois (pour faire un cert privé)
Makecert -r -pe -ss YourName YourName.cer
certmgr.exe -add YourName.cer -s -r racineMachine locale
2.After (pour ajouter votre signe à votre application)
signtool signe/s YourName YourApp.exe
Et encore une autre option, si vous développez sous Windows 10 mais que le logiciel signtool.exe de Microsoft n’est pas installé, vous pouvez utiliser Bash sous Ubuntu sous Windows pour signer votre application. Voici un aperçu:
https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/
Utilisez le lien suivant pour signer le fichier .exe (setup/installer) (signez le fichier exe/setup sans utiliser le programme d'installation de Microsoft)
https://ebourg.github.io/jsign/#files
exemple de commande Java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe
Travaillé pour moi :)