webentwicklung-frage-antwort-db.com.de

Signieren einer Windows EXE-Datei

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.

150
Lasar

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:

Hoffentlich bietet das mehr Informationen für alle, die dies versuchen!

103
Mel Green

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
25
Lee Richardson

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.

17
Andreas

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

  • Profis
    • Durch die Verwendung eines von einer Zertifizierungsstelle (Certificate Authority) ausgestellten Zertifikats wird sichergestellt, dass Windows den Endbenutzer nicht vor einer Anwendung eines "unbekannten Herausgebers" auf einem Computer warnt, der das Zertifikat der Zertifizierungsstelle verwendet (das Betriebssystem wird normalerweise mit den Stammzertifikaten von manny-Zertifizierungsstellen geliefert) )
  • Nachteile:
    • Das Erhalten eines Zertifikats von einer Zertifizierungsstelle ist mit Kosten verbunden

Mit Makecert ein Zertifikat erstellen

  • Vorteile:
    • Die Schritte sind einfach und Sie können das Zertifikat für die Endbenutzer freigeben
  • Nachteile:
    • Endbenutzer müssen das Zertifikat manuell auf ihren Computern installieren. Abhängig von Ihren Clients ist dies möglicherweise keine Option
    • Mit makecert erzeugte Zertifikate werden normalerweise für die Entwicklung und Prüfung verwendet, nicht für die Produktion

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"

    • In diesem Beispiel verwenden wir ein im persönlichen Ordner gespeichertes Zertifikat mit einem SHA1-Fingerabdruck (Dieser Fingerabdruck stammt aus dem Zertifikat), um die Datei unter "C:\filename.dll" zu signieren.
  • 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 "

    • In diesem Beispiel wird das Zertifikat "c:\path\to\mycert.pfx" mit dem Kennwort pfxpassword verwendet, um die Datei "c:\path\to\file.exe" zu signieren.

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:

17
Erick Castrillo

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 .

10
mozey

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

4
Ethan Kuo

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/

3
Stacey Richards

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 :)

2
user2085962