Hier: Wie man seine Programme mit einem Software-Zertifikat signiert (Code Signing), mit einem Beispiel für Windows in meiner Pascal-Unit.
Gesucht wird eine Umsetzung für Mac. Kann dasselbe Zertifikat für Windows und Mac verwendet werden? (ich vermute: ja)
Ich wurde per Privatnachricht gefragt, ob ich Code-Signing erklären kann. Gerne, hier als öffentliche Antwort. Da ich selbst jedoch nur Windows nutze, wird noch nach Erfahrung auf'm Mac gesucht.
Für nur intern verwendete Programme hat das teure Zertifkat kaum einen Mehrwert, aber wer seine Programme per Webseite zum Download anbietet, sollte über ein Software-Zertifikat nachdenken.
Mittels Code-Signing wird das eigene Zertifikat an eine Programmdatei (.EXE .DLL .MSU) angehängt. Darin ist ein Hash des Programmcodes enthalten, d.h. der Empfänger kann prüfen, ob die Datei unverändert ist oder z.B. böswillig manipuliert wurde, z.B. zwischenzeitlich auf dem Webserver befallen oder ausgetauscht wurde. Der eingebettete Hash ersetzt das frühere Handling von MD5-Prüfsummen, die man manuell abgleichen musste.
Zudem wird der Herausgeber namentlich angezeigt. Der Nutzer kann also prüfen, ob er eine unveränderte Original-Datei des Herausgebers erhalten hat.
Als Erstes benötigt man ein spezielles "Code Signing Certificate", das es in der "OV"-Version für normale Anwendungen gibt, und als "EV" auch für Kernel-Mode Driver.
Ein solches Zertifikat bekommt man z.B. bei Thawte oder Comodo. 2020 habe ich noch "nur" 80€/Jahr dafür hinblättern müssen, aber jetzt sehe ich gerade, dass der Preis auf rund 400€/Jahr gestiegen ist. Oh wow!
Ich habe mein Zertifikat vor 2 Jahren über ksoftware bestellt, wo es aktuell mindestens $219/Jahr kostet: https://www.ksoftware.net/code-signing-certificates/
Hinzu kommen neuerdings noch $130 für den Versand eines Token. Macht zusammen knapp $800 für 3 Jahre. Bei den Preisen muss man vermuten, dass der Token aus Gold ist und dass jede Zahl des Zertifikats von einem menschlichen Rechenkünstler von Hand erstellt wird.

Nach der Bestellung erhält man eine .PFX-Datei, die mit einem eigenen Passwort verschlüsselt ist.
Ich kann mich dunkel erinnern, dass man die .PFX-Datei aus dem Browser exportieren musste, weshalb man den Browser auf keinen Fall schließen durfte ohne zu speichern. Herzklopfen für damals 80€.
Unter Windows benötigt man das signtool.exe, das nicht standardmäßig bei Windows dabei ist, sondern mit der Windows SDK installiert wird, siehe: https://developer.microsoft.com/de-de/w ... ndows-sdk/
Der SDK-Installer bietet 3,7 GB Zeugs an, das man zum Glück alles abwählen kann, außer den "Windows SDK Signing Tools für Desktop Apps" (nur 1,6 MB).
Nach der Installation findet man das signtool.exe an einem nicht festgelegten Pfad irgendwo im Programme-Ordner.
Das Signtool ist ein Kommandozeilenprogramm, das rund 30 Parameter kennt. Super.
Deshalb habe ich eine Unit geschrieben, welche die Parameter zusammenbastelt (7 werden mindestens benötigt) und das Signtool aufruft.
Weiter im nächsten Beitrag ...