Ich habe eine EXE Datei, die ich unterschreiben möchte, damit Windows den Endbenutzer nicht vor einer Anwendung eines "unbekannten Herausgebers" warnt. Ich bin kein Windows-Entwickler. Bei der fraglichen Anwendung handelt es sich um einen Bildschirmschoner, der aus einer Anwendung generiert wird, die Bildschirmschoneranwendungen generiert. Als solches habe ich keinen Einfluss darauf, wie die Datei generiert wird.
Ich habe bereits herausgefunden, dass ich ein Codesignatur -Zertifikat von einem CA like Verisign benötige oder instantssl.com. Was ich nicht verstehe, ist, was ich tun muss (wenn überhaupt möglich), um meine EXE-Datei zu signieren. Was ist eine einfache Erklärung?
Die Antwort von Mel Green brachte mich weiter, aber signtool möchte, dass ich spezifiziere, welches Zertifikat auf jeden Fall verwendet werden soll. Kann ich ein kostenloses Codesignaturzertifikat bekommen, um zu testen, ob dies überhaupt für mich funktioniert?
Bitte geben Sie auch an, welche Zertifikatsart die richtige ist. Die meisten Websites erwähnen nur "Codesignatur" und sprechen über das Signieren von Anwendungen, die tatsächlich vom Benutzer kompiliert wurden. Dies ist bei mir nicht der Fall.
Versuchen Sie es mit Microsoft's Sign Tool
Sie laden es als Teil des Windows SDK für Windows Server 2008 und .NET 3.5 herunter. Einmal heruntergeladen, können Sie es wie folgt über die Befehlszeile verwenden:
signtool sign/a MyFile.exe
Dies signiert eine einzelne ausführbare Datei unter Verwendung des "besten verfügbaren Zertifikats". (Wenn Sie kein Zertifikat haben, wird eine SignTool-Fehlermeldung angezeigt.)
Oder Sie können versuchen:
signtool SignWizard
Dadurch wird ein Assistent gestartet, der Sie durch das Signieren Ihrer Anwendung führt. (Diese Option ist nach Windows SDK 7.0 nicht verfügbar.)
Wenn Sie ein Zertifikat haben möchten, mit dem Sie Ihren Signaturprozess für die ausführbare Datei testen können, können Sie das .NET-Tool Makecert verwenden.
Certificate Creation Tool (Makecert.exe)
Nachdem Sie Ihr eigenes Zertifikat erstellt und es zum Signieren Ihrer ausführbaren Datei verwendet haben, müssen Sie es manuell als vertrauenswürdige Stammzertifizierungsstelle für Ihren Computer hinzufügen, damit UAC um dem Benutzer mitzuteilen, dass es sich um eine vertrauenswürdige Quelle handelt. Wichtig . Das Installieren eines Zertifikats als ROOT CA gefährdet die Privatsphäre Ihrer Benutzer. Sehen Sie, was mit Dell passiert ist. Weitere Informationen dazu finden Sie sowohl im Code als auch durch Windows in:
Frage zum Stapelüberlauf Installieren Sie Zertifikate im lokalen Windows-Benutzerzertifikatsspeicher in C #
Hoffentlich bietet das mehr Informationen für alle, die dies versuchen!
Sie können eine bekommen frei billiges Code Signing Zertifikat von Certum wenn Sie Open Source Entwicklung betreiben.
Ich benutze das Zertifikat seit über einem Jahr und es beseitigt die unbekannte Herausgebernachricht von Windows.
Zum Signieren von Code verwende ich signtool.exe aus einem Skript wie diesem:
signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe
Das ASP-Magazin ASPects enthält eine detaillierte Beschreibung zum Signieren von Code (Sie müssen Mitglied sein, um den Artikel lesen zu können). Sie können es über http://www.asp-shareware.org/ herunterladen
Hier ist ein Link zu einer Beschreibung, wie Sie Ihr eigenes Testzertifikat erstellen .
Dies könnte auch interessant sein.
Ich hatte das gleiche Szenario in meinem Job und hier sind unsere Ergebnisse
Das erste, was Sie tun müssen, ist, das Zertifikat zu erhalten und es auf Ihrem Computer zu installieren. Sie können eines entweder von einer Zertifizierungsstelle kaufen. ) oder generiere eins mit makecert .
Hier sind die Vor- und Nachteile der beiden Optionen
Zertifikat kaufen
Mit Makecert ein Zertifikat erstellen
Signiere die ausführbare Datei
Es gibt zwei Möglichkeiten, die gewünschte Datei zu signieren:
Verwenden eines auf dem Computer installierten Zertifikats
signtool.exe signiert/a/s MY/sha1 sha1_thumbprint_value/t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"
Verwenden einer Zertifikatdatei
signtool sign/tr http://timestamp.digicert.com /td sha256/fd sha256/f "c:\path\to\mycert.pfx"/p pfxpassword "c:\path\to\file.exe "
Testen Sie Ihre Unterschrift
Methode 1: Verwenden von Signtool
Gehen Sie zu: Start> Run Type CMD> klicken Sie auf OK. Geben Sie an der Eingabeaufforderung das Verzeichnis ein, in dem sich das Signtool befindet. Führen Sie Folgendes aus:
signtool.exe verify/pa/v "C:\filename.dll"
Methode 2: Verwenden von Windows
Klicken Sie mit der rechten Maustaste auf die signierte Datei. Wählen Sie Eigenschaften. Wählen Sie die Registerkarte Digitale Signaturen. Die Signatur wird im Bereich Signaturliste angezeigt.
Ich hoffe das konnte dir helfen
Quellen:
Wenn Sie die ausführbare Datei auf einer Linux-Box signieren müssen, können Sie auch den Signcode aus den Mono-Projekt-Tools verwenden. Es ist nter Ubuntu unterstützt .
Referenz https://steward-fu.github.io/website/driver/wdm/self_sign.htm Hinweis: signtool.exe vom Microsoft SDK
1. Zum ersten Mal (um private Zertifikate zu machen)
Makecert -r -pe -ss YourName YourName.cer
certmgr.exe -add YourName.cer -s -r localMachine root
2.Nachher (um Ihr Zeichen zu Ihrer App hinzuzufügen)
signtool sign/s YourName YourApp.exe
Und noch eine weitere Option: Wenn Sie unter Windows 10 entwickeln, aber nicht Microsoft signtool.exe installiert haben, können Sie Ihre App mit Bash unter Ubuntu unter Windows signieren. Hier ist ein heruntergekommener:
https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/
Verwenden Sie den folgenden Link, um die EXE-Datei (Setup/Installer) zu signieren (Exe-/Setup-Datei signieren, ohne Microsoft Setup Signtool zu verwenden)
https://ebourg.github.io/jsign/#files
beispielbefehl Java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe
Arbeitete für mich :)