So signieren Sie Anwendungen unter Windows (SDK)
Lassen Sie uns gemeinsam betrachten, wie man Anwendungen unter Windows mit dem Windows SDK (dem signtool-Tool) und einem Code Signing-Zertifikat signiert. Die Anleitung setzt ein vorbereitetes Code Signing-Zertifikat im PFX-Format und die installierte Entwicklungsumgebung des Windows SDK auf einem Windows-Betriebssystem voraus. Laden Sie das SDK von der Microsoft-Website für die entsprechende Version Ihres Windows-Betriebssystems herunter, zum Beispiel das Windows Software Development Kit (SDK) für Windows 10.
Verwendung des Signtool
Signtool.exe ist ein Programm, das Anwendungen mit einem Code Signing-Zertifikat signiert. Nach der Installation des Windows SDKs verwenden Sie es über die Befehlszeile. Um Anwendungen zu signieren, müssen Sie die grundlegenden Parameter kennen, um die Anwendung mit dem richtigen Zertifikat und den richtigen Einstellungen korrekt zu signieren.
Das Signieren erfolgt tatsächlich über die Befehlszeile, und das Zertifikat muss auf dem betreffenden Computer verfügbar sein (es wird nirgends installiert).

Die grundlegenden Parameter (Befehle) zum Signieren sind:
signtool Befehl /parameter
Unter den Befehlen verwenden Sie Sign zum Signieren und Verify zur Überprüfung der Signatur der Datei. Timestamp ist der Befehl zum Einfügen eines Zeitstempels, aber dies können Sie direkt beim Signieren der Datei tun.
Nützliche Parameter:
- /f SignCertFile – verwenden Sie eine PFX-Datei zum Signieren, verweist dieser Befehl auf deren Speicherort. Ein Code Signing-Zertifikat als PFX zu erhalten, ist nicht mehr möglich.
- /s StoreName – bei Verwendung eines Zertifikatspeichers (z.B. auf einem Token) gibt dieser an, welcher verwendet werden soll. Standardwert ist My.
- /t URL – fügt einen Zeitstempel hinzu und verlinkt darauf. Sie finden die URLs der Zeitstempelserver unten.
- /td - Algorithmus des Fingerabdrucks im Zeitstempel. Wählen Sie mindestens den Parameter sha256 oder höher.
- /fd - Algorithmus des Fingerabdrucks. Wählen Sie mindestens den Parameter sha256 oder höher.
Die vollständige Dokumentation finden Sie auf der Microsoft-Website oder durch Eingabe des Befehls „signtool sign /?“.
Ein vollständiger Befehl zum Signieren einer Datei könnte beispielsweise so aussehen:
SignTool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe
Verwenden Sie immer einen Zeitstempel. Dies gewährleistet der signierten Anwendung Vertrauenswürdigkeit auch nach Ablauf des Zertifikats, mit dem sie signiert wurde. Das ist sehr wichtig, da Sie ältere Anwendungen (typischerweise nach zwei Jahren Ablauf des Code Signing-Zertifikats) nicht erneut rückwirkend signieren müssen, damit sie nicht als nicht vertrauenswürdig gelten. Wenn Sie zum Zeitpunkt der Signatur einen Zeitstempel verwenden und das Zertifikat gültig ist, bleibt die Anwendung auch in Zukunft gültig.
Es gibt mehrere Zeitstempel-Server; ich empfehle die Verwendung des Digicert Zeitstempel-Servers: http://timestamp.digicert.com/
Dieser Server hat kein Webinterface auf Port 80, sodass es sinnlos ist, den Browser zu verwenden (es wird nichts angezeigt).
Zertifikatspeicher
Ein Zertifikat kann an mehreren Stellen (in mehreren Speichern) gespeichert werden und auf verschiedene Weisen „aufgerufen“ werden. Früher war es möglich, das Zertifikat als PFX-Datei zu speichern, aber das ist nicht mehr möglich. Eine PFX-Datei kann von jedermann gestohlen werden, und obwohl sie durch ein Passwort geschützt ist, stellt sie ein großes Sicherheitsrisiko dar (die Passwörter sind oft sehr schwach). PFX ist besonders für die Sicherung von S/MIME-Zertifikaten oder für das Web geeignet.
Eine übliche Methode zur Speicherung des Code Signing-Zertifikats ist die Speicherung auf einem Token und der anschließende Aufruf nach dem Subjekt im Zertifikat. Diese Methode ist sicher und praktisch die gleiche wie das frühere Signieren mit PFX. Ohne den privaten Schlüssel, der nicht aus dem Token exportiert werden kann, ist das Zertifikat nutzlos, und sein Missbrauch ist somit nicht möglich; bei fünfmaliger falscher Eingabe des Passworts wird das Token blockiert.
Das Signieren mit Verwendung des Speichers erfordert dann 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 Standardspeicher My wählen, und die Signierungssoftware findet das Zertifikat automatisch:
signtool sign /s My /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe
Automatisierung des Code Signing mit Cloud HSM
Die Automatisierung der Codesignierung wird sehr oft nachgefragt, jedoch kann mit einem Zertifikat auf einem Token nicht automatisch signiert werden; es kann auch nicht auf einem Server verwendet werden. Zum Glück gibt es Dienste, die sich gut für die Automatisierung der Signierung eignen. Digicert bietet den Service KeyLocker oder den Software Trust Manager an. Signaturschlüssel können auch in einem Cloud-HSM von Azure oder Google Cloud gespeichert werden.
Weitere Informationen zu den Möglichkeiten der Automatisierung der Codesignierung finden Sie im Artikel Code Signing Zentrum.
Signaturüberprüfung
Jetzt wissen Sie, wie man signiert, und Ihre Anwendung hat ihren ersten vertrauenswürdigen Signatur erhalten. Sie sind jetzt sicher neugierig, wie Sie die Signatur überprüfen können.
Die Überprüfung ist mit dem Signtool-Werkzeug möglich:
signtool verify C:\test.exe
Einfacher lässt sich die Überprüfung durch die Anzeige der Dateieigenschaften im Windows Explorer durchführen. Sie können die Signaturdetails bis hin zum ausgeführten Zertifikat im Detail „zerlegen“.

Es tut uns leid, dass Sie hier für Ihren Bedarf nichts Passendes gefunden haben.
Helfen Sie uns, diesen Artikel zu verbessern. Schreiben Sie uns bitte, was Sie hier erwartet und nicht erfahren haben.