Lesedauer 5 Minuten

Der folgende Beitrag zeigt, wie man Windows Apps mit einem 100% vertrauenswürdigen SSL-Zertifikat relativ kostengünstig mittels SignTool code-signieren kann. Ein absolutes Muss für jeden Entwickler, da die Restriktionen von Windows Defender seit Windows 10 erheblich verstärkt wurden.

Woher bekomme ich ein günstiges SSL-Zertifikat um meine App zu signieren?

Die Antwort lautet bei Comodo, oder besser gesagt bei einem Premium Reseller von Comodo, z.B  Leader Telecom B.V.

Die Vorteile:

  • Comodo SSL-Zertifikate sind sog. Root-Zertifikate, d.h. Windows kennt bei Auslieferung bereits Comodo als vertrauenswürdige Zertifizierungs-Instanz.
  • Der Preis ist bereits rabattiert und wird zeitnah an Dollarschwankungen angepasst.
    Zum Zeitpunkt dieses Blog-Beitrags beträgt der Preis lediglich 63 EUR im Jahr.
  • Man kann das SSL-Zertifikat 14 Tage lang unverbindlich testen und erst dann bezahlen.
  • Die Verifizierung erfolgt unkompliziert anhand der Ust-IdentNr und einem automatischen Rückruf auf die angegebene Telefonnummer.
  • Über ein Portal können alle SSL-Zertifikate jederzeit selbst gemanaged werden.

Der komplette SSL Zertifikats-Prozess wird durch Leader Telecom vorbildlich und schnell abgewickelt.

Wichtig:
Zum Kauf benötigt man Internet Explorer 11 unter Windows oder  Mozilla Firefox <= Version 68 auf anderen Plattformen, da nur diese beiden Browser SSL-Certificate Sign Requests generieren. Das Windows Code-Zertifkat kann auch auf einem Mac oder Linux PC geordert werden. Der Sign-Request und Download des Zertifikats erfolgen hier ebenfalls voll automatisch.

Das SSL Code-Zertifikat aus Firefox exportieren

In unserem Beispiel haben wir den Kauf des SSL-Zertifikats mit Firefox durchgeführt. Als Nächstes muss das SSL Code-Zertifikat zur Verwendung unter Windows aus dem Zertifikats-Store des Browsers exportiert werden:

  • Hierzu wählen wir in den Einstellungen von Firefox “Datenschutz und Sicherheit” aus, scrollen ganz nach unten und klicken auf “Zertifikate anzeigen”.
  • Danach sichern wir das SSL Codesign Zertifikat als PKCS12-Datei.
  • Vor dem Speichern muss noch ein Passwort zur Absicherung des SSL Zertifikats festgelegt werden.
  • Die exportierte Datei hat die Endung .p12 und enthält sowohl den Public- als auch den Private Key.

firefox ssl

Installation des Zertifikats über Internet Explorer 11

Wenn man zum Kauf den Internet Explorer 11 benutzt, landet das Zertifikat automatisch im Zertifikatsspeicher von Windows und kann von dort aus exportiert werden. Diesen findet man unter Systemeinstellungen / Internetoptionen:

windows ssl zertifikat

Bei Export sind die folgenden Optionen zu beachten:

windows ssl zertifikat exportieren 2

Sollte es bei der Weiterverwendung des exportieren Zertifikats Probleme geben, dann sollte es mit Hilfe des DigiCert Utility (siehe unten) sauber neu exportiert werden.

SignTool unter Windows installieren

Als Nächstes benötigen wir signtool.exe auf unserem Windows PC. Die App ist Bestandteil des Windows SDK. Hier muss darauf geachtet werden, dass das SDK zur aktuellen Windows-Version passt. Das Windows 10 SDK gibt es z.B. hier: Windows 10 SDK downloaden.

Nach der Installation findet Ihr das SignTool hier:

Es macht Sinn, den Pfad in den Suchpfad für System-Kommandos einzubauen:

windows signtool pfad

SignTool Error: ImportCertObject() failed

Will man nun voller Vorfreude seine erste App signieren (dazu gleich mehr), stolpert man leider über diesen Fehler:

Hierbei handelt es sich um einen Bug von Firefox. Das exportierte SSL Code-Zertifikat ist zwar intakt, ein internes Feld jedoch zu lang, was zu einem Abbruch von SignTool führt. Es spielt dabei keine Rolle, ob man Firefox unter Windows oder einer anderen Plattform verwendet hat.

Der Fehler lässt sich glücklicherweise mit dem DigiCert Utility beheben:

  • Wir importieren die .p12-Datei in DigiCert …
  • und exportieren das SSL Code-Zertifikat als PFX-Datei.
  • Wichtig: Der private Key muss mit exportiert werden.
    Hierzu ist das Häkchen bei “Include all certificates in the certification path” zu setzen.

firefox ssl code zertifikat reparieren

Windows Apps mit SignTool signieren

Im folgenden Szenario heisst unser mittels DigiCertUtil exportiertes SSL Code-Zertifilat “Comodo_current.pfx”, unser beim Exportieren eingegebenes Passwort heisst “PASSWORD” und unsere zu signierende App heisst “test.exe”.

Zum Code-Signieren rufen wir das SignTool wie folgt auf:

Die Kommandozeilen-Parameter haben folgende Bedeutung:

  • sign: Das Kommando zum Signieren
  • /f: Gibt das SSL CodeSign-Zertifikat an, hier Comodo_current.pfx
  • /fd: Erzwingt die Verwendung von SHA256 Hashes für das Zertifikat.
  • /tr: Gibt die URL des RFC 3161-Zeitstempelservers an.
    Der Zeitstempel ist wichtig, damit die App auch nach Ablauf des SSL Code-Zertifikats weiter benutzt werden kann.
  • /td: Fordert eine SHA256 Prüfsumme für den Zeitstempel an.
  • /p: Gibt das Zertifikats-Passwort an.
  • /v: Sorgt dafür, dass ausführliche Meldungen ausgeben werden.

Eine ausführliche Liste aller Parameter findet Ihr hier: Command Line Options von SignTool

Will man alle *.exe-Dateien in einem Ordner mit nur einem Befehl signieren, erreicht man das wie folgt:

SignTool in Inno Setup integrieren

Wer seine Installer mit InnoSetup baut, kann sich über die SignTool-Integration freuen: Inno Setup generiert damit automatisch einen bereits fertig signierten Installer. Zur Integration von SignTool in Inno Setup geht man im Inno Setup Studio wie folgt vor:

  • Unter Tools den Menüpunkt “Configure Sign Tools” auswählen
  • Im folgenden Dialog den kompletten Pfad zu SignTool inklusive aller Parameter hinzufügen.
  • Als Name wählen wir “signtool”
  • Anstelle der zu signierenden Datei wird $f eingetragen.

Beispiel:

Unser Inno Setup Script ergänzen wir dann noch in der SETUP SECTION mit der Zeile:

inno setup signtool integrieren 2

Und das war’s auch schon. Viel Spass beim Signieren!

[Edit 2020-01-03]

Wo finde ich das Windows SignTool in neueren Windows 10 SDKs?

In neueren Windows 10 SDKs hat sich der Pfad bzw. sogar die Installations-Prozedur für das Windows SignTool geändert:

Um das Windows SignTool zu installieren muss wie folgt vorgegangen werden (Beispiel anhand dem Windows 10 1903 SDK):

  • Unter dem eingangs erwähnten Download-Link, hat man nun die Wahl zwischen einem Installer und einer ISO-Datei. Hier die ISO-Datei auswählen.
  • Nach Download die ISO-Datei per Doppelklick öffnen und im Ordner “Installers” das Paket “Windows SDK Signing Tools-x86_en-us.msi” ausführen. Wichtig: Der Installer öffnen kein Fenster, aber die Installation klappt trotzdem.

Nach Installation ist der Pad zum Windows SignTool:

bzw.

[Edit 2021-11-09]

Das Windows SignTool unter Windows 11

Das Windows 11 SDK gibt es hier, Download vorzugsweise als ISO-Datei. Nach Start des Installers lässt sich das SignTool komfortabel auswählen. Alle anderen Optionen können ausgeschaltet werden.

Hat man das SignTool vorher schon mal verwendet, sollten alle Aufrufe durch die Parameter /tr, /td und /fd ergänzt werden:

 

Hat Dir der Beitrag gefallen?

Wenn Du Fragen oder Anmerkungen zu diesem Beitrag hast, dann starte einen Kommentar. DANKE für Dein Feedback!