//Windows SignTool: Apps mit günstigem SSL-Zertifikat sicher code-signieren

Windows SignTool: Apps mit günstigem SSL-Zertifikat sicher code-signieren

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 Mozilla Firefox oder Google Chrome, da nur diese beiden Browser SSL-Certificate Sign Requests generieren. Die Plattform spielt hierbei keine Rolle: So kann das Windows Code-Zertifkat auch auf einem Mac oder Linux PC geordert werden. Sign-Request und Download des Zertifikats erfolgt hier 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.

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:

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.

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
  • /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.
  • /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:

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

 

By |2018-05-30T10:16:48+00:002018-05-28|Categories: Hacks & Tipps|Tags: |0 Comments

About the Author:

Seit 1993 bin ich als freiberuflicher Softwareentwickler mit den Schwerpunkten Programmierung von Internet- und Crossplattform-Applikationen, sowie als Mediendesigner, IT-Consultant und Dozent tätig. Die Übergänge zwischen diesen Themen sind fliessend. Mein Blog fasst all dies zu einem News Stream zusammen. Viel Spass beim Stöbern! -- Harald

Leave A Comment