J'ai un fichier EXE que je voudrais signer afin que Windows ne prévienne pas l'utilisateur final d'une application 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é.
J'ai déjà découvert que j'aurais besoin d'un certificat de signature de code d'une autorité de certification 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 amené 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 préciser quel type de certificat est le bon. La plupart des sites ne mentionnent que la «signature de code» et parlent des applications de signature qui sont effectivement compilées par l'utilisateur. Ce n'est pas le cas pour moi.
la source
Réponses:
Vous pouvez essayer d'utiliser l'outil de signature de Microsoft
Vous le téléchargez dans le cadre 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 ceci:
Cela signe un seul exécutable, en utilisant le «meilleur certificat» disponible. (Si vous n'avez pas de certificat, il affichera un message d'erreur SignTool.)
Ou vous pouvez essayer:
Cela lancera un assistant qui vous guidera tout au long de la signature de votre application. (Cette option n'est pas 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 exécutable, vous devrez l'ajouter manuellement en tant qu'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 fiable. Important . L'installation d'un certificat en tant que ROOT CA mettra en danger la confidentialité de vos utilisateurs. Regardez ce qui s'est passé avec DELL. Vous pouvez trouver plus d'informations pour y parvenir à la fois dans le code et via Windows dans:
Question de débordement de pile Installer les certificats dans le magasin de certificats utilisateur Windows local en C #
Installation d'un certificat auto-signé en tant qu'autorité de certification racine de confiance dans Windows Vista
J'espère que cela fournira des informations supplémentaires pour quiconque tente de le faire!
la source
J'ai eu le même scénario dans mon travail et voici nos résultats
La première chose à faire est d' obtenir le certificat et de l'installer sur votre ordinateur, vous pouvez soit en acheter un auprès d'une autorité de certification, soit en générer un à l'aide de makecert .
Voici les avantages et les inconvénients des 2 options
Acheter un certificat
Générer un certificat avec Makecert
Signez le fichier exécutable
Il existe deux façons de signer le fichier souhaité:
Utilisation d'un certificat installé sur l'ordinateur
signtool.exe signe / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v "C: \ filename.dll"
Utilisation d'un fichier de certificat
signtool sign / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f "c: \ chemin \ vers \ moncert.pfx" / p pfxpassword "c: \ chemin \ vers \ fichier.exe"
Testez votre signature
Méthode 1: Utilisation de signtool
Allez dans: Démarrer> Exécuter Type CMD> cliquez sur OK À l'invite de commande, entrez le répertoire où se trouve signtool Exécutez ce qui suit:
signtool.exe vérifier / pa / v "C: \ filename.dll"
Méthode 2: Utilisation de 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:
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537361(v=vs.85)
https://www.digicert.com/code-signing/signcode-signtool-command-line.htm
https://knowledge.symantec.com/support/code-signing-support/index?page=content&id=SO15544&actp=search&viewlocale=en_US
https://msdn.microsoft.com/en-us/library/windows/desktop/aa386968(v=vs.85).aspx
la source
Vous pouvez obtenir un certificat de signature de code
gratuit etbon marché auprès de Certum si vous faites du développement open source.J'utilise leur certificat depuis plus d'un an et il supprime le message inconnu de l'éditeur de Windows.
En ce qui concerne la signature du code, j'utilise signtool.exe à partir d'un script comme celui-ci:
la source
Le magazine ASPects de l'ASP 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 de la façon dont vous pouvez créer votre propre certificat de test .
Cela pourrait aussi être intéressant.
la source
Une autre option, si vous avez besoin de signer l'exécutable sur une machine Linux, consiste à utiliser le signcode des outils de projet Mono . Il est pris en charge sur Ubuntu .
la source
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 certificat privé)
Makecert -r -pe -ss VotreNom VotreNom.cer
certmgr.exe -add YourName.cer -s -r localMachine root
2.Après (pour ajouter votre signe à votre application)
signtool signe / s YourName YourApp.exe
la source
Et encore une autre option, si vous développez sur Windows 10 mais que vous n'avez pas installé signtool.exe de Microsoft, vous pouvez utiliser Bash sur 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/
la source
osslsigncode
est également disponible souscygwin
, donc si vous l'utilisez déjà (comme je le suis), vous pouvez vous connecter à votre environnement actuel, plutôt que de devoir passer à WSL.Utilisez le lien suivant pour signer le fichier .exe (setup / installer) (signer le fichier exe / setup sans utiliser Microsoft setup signtool)
https://ebourg.github.io/jsign/#files
exemple de commande java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe
A travaillé pour moi :)
la source
Ce n'est pas une réponse directe à la question, mais elle est étroitement liée (et utile j'espère) puisque tôt ou tard un programmeur aura mis la main dans le portefeuille:
Donc, les prix de la signature EV:
1 an 350 $ + (50 $ de frais cachés)
2 ans 600 $
3 ans 750 $
[www.ksoftware.net] [3]
eToken envoyé sous forme de clé USB. Aucun lecteur nécessaire.
Vous achetez en fait chez Comodo (Sectigo)
1 an 350 euros
3 ans 799 euros
sklep.certum.pl
1 an 499 $ USD
3 ans 897 $ USD
sectigo.com
1 an 410 $ au total
2 ans 760 $ au total
3 ans 950 $ au total
www.globalsign.com
1 an: 600 $ (c'était 104 $)
3 ans:?
www.digicert.com
1 an: 700 $
3 ans: ridicule cher
[ https://trustcenter.websecurity.symantec.com/]
Plus de prix ici:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html
Voir également le lien ajouté par Erick Castrillo: cheappsslsecurity.com/sslproducts/codesigningcertificate.html
la source