Wie können Sie Anwendungen auf Windows (SDK) signieren?

Schauen wir uns an, wie Anwendungen auf Windows mit Windows SDK (Signtool) und den Code Signing Zertifikaten signiert werden. Das ausgestellte Code Signing Zertifikat haben Sie bereits als eine PFX-Datei vorhanden und die Entwicklungsumgebung Windows SDK auf das Operationssystem Windows installiert. SDK können Sie auf dem Microsoft Web für Ihre konkrete Windows-Version herunterladen, zum Beispiel Windows Software Development Kit (SDK) for Windows 10.

Nutzung von Signtool

Signtool.exe ist ein Programm, welches Anwendungen mit dem Code Signing Zertifikat signiert. Nach der Installierung von Windows SDK nutzen Sie es über die Kommandozeile. Für die Signierung von Anwendungen müssen Sie die Basis-Parameter kennen, damit Sie die Signierung mit dem richtigen Zertifikat und mit den richtigen Einstellungen aufrufen können.

Die Signierung erfolgt tatsächlich über die Kommandozeile. Somit reicht es aus, das Zertifikat auf dem Rechner gespeichert zu haben, Sie brauchen es nicht irgendwohin zu installieren.

Signieren mit signtool.exe
Beispiel des Signierens mit signtool.exe

Die Basis-Parameter (Befehle) für die Signierung lauten folgendermaßen:

Signtool Befehl /Parameter

Von den Befehlen werden Sie sign für die Signierung und verify für die Verifizierung der Signatur der Datei nutzen. Timestamp ist ein Befehl für die Einfügung des Zeitstempels, aber diesen können Sie ebenfalls gleich bei der Signierung der Datei erstellen.

Nützliche Parameter:

  • /f SignCertFile – falls Sie für die Signatur eine PFX-Datei nutzen, verweist dieser Befehl auf ihren Speicherort. Es ist nicht mehr möglich, ein Code Signing Zertifikat als eine PFX-Datei zu erwerben.
  • /s StoreName – falls Sie den Zertifikatsspeicher nutzen (z.B. auf einem Token), bestimmt dieser Parameter näher, welcher genutzt werden soll. Default ist My.
  • /t URL – fügt ein Zeitstempel und einen Link zu ihm hinzu. Die URL der Timestamp-Server finden Sie unten.
  • /td - Hash-Algorithmus (digest) im Zeitstempel. Wählen Sie mindestens sha256 oder höher.
  • /fd - Hash-Algorithmus (digest). Wählen Sie mindestens sha256 oder höher.

Die vollständigen Unterlagen finden Sie auf dem Microsoft Web oder nach der Eingabe der Kommandozeile „signtool sign /?“.

Die ganze Kommandozeile für die Signierung der Datei kann dann zum Beispiel folgendermaßen aussehen:

SignTool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Timestamp, also den Zeitstempel, nutzen Sie immer. Er stellt sicher, dass die signierte Anwendung auch nach dem Ablaufdatum des Zertifikats, welches für die Signierung genutzt wurde, vertrauenswürdig bleibt. Dies ist äußerst wichtig, weil sie dann die älteren Anwendungen nicht erneut signieren werden müssen (typischerweise nach der zweijährigen Gültigkeitsdauer des Code Signing Zertifikats). Wenn Sie im Moment der Signierung den Timestamp nutzen werden und das Zertifikat nicht widerrufen wird, wird auch die Anwendung in der Zukunft ihre Vertrauenswürdigkeit und Gültigkeit behalten.

Es gibt mehrere Server, welche die Zeitstempel anbieten, aber wir empfehlen Ihnen, den Timestamp Server von DigiCert zu nutzen: http://timestamp.digicert.com/

Dieser Server hat kein Web auf dem Port 80, deshalb versuchen Sie nicht, ihn mit dem Browser aufzurufen – sie würden nichts sehen.

Zertifikatsspeicher

Das Zertifikat kann in verschiedenen Speichern gespeichert werden und es kann auf verschiedenen Weisen aufgerufen werden. Früher war es möglich, das Zertifikat als PFX-Datei zu speichern, dies ist jedoch nicht mehr möglich. Die PFX-Datei kann Ihnen jeder entwenden und obwohl sie mit einem Passwort geschützt ist, handelt es sich um ein großes Sicherheitsrisiko. Darüber hinaus sind die Passwörter oft sehr schwach. PFX ist vor allem als Sicherungskopie der S/MIME- oder Web-Zertifikate geeignet.

Eine übliche Methode zum Speichern eines Code Signing-Zertifikats besteht darin, es auf einem Token zu speichern und es dann nach dem Subjekt im Zertifikat aufzurufen. Diese Methode ist sicher und praktisch identisch mit der früheren Signatur mit PFX. Ohne den privaten Schlüssel, der nicht aus dem Token exportiert werden kann, ist das Zertifikat nutzlos und ein Missbrauch daher nicht möglich; wird das Passwort fünfmal falsch eingegeben, wird der Token gesperrt.

Die Signatur mit einem auf einem Token gespeicherten Zertifikat erfordert den Parameter /n SubjectName:

signtool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Oder Sie können den Standard-Speicher My wählen und die Signatur-SW findet das Zertifikat automatisch selbst:

signtool sign /s My /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Überprüfung der Signatur

Nun können Sie schon signieren und Ihre Anwendung haben Sie mit der ersten vertrauenswürdigen Signatur versehen. Bestimmt möchten Sie wissen, wie die Signatur überprüft werden kann.

Die Überprüfung ermöglicht das Tool Signtool:

signtool verify C:\test.exe

Oder Sie können sich die Eigenschaften der Datei in dem Windows Explorer anzeigen lassen. Das Detail der Signatur lässt sich bis zum Detail des genutzten Zertifikats sezieren.

Detail der Signatur im Windows Explorer
Detail der Signatur im Windows Explorer
War für Sie dieser Artikel nützlich?