Menü

Signieren von Programmen

Zurück | Ebene zurück

Einführung

Zum Signieren von ausführbaren Programmen "Authenticode Signiture", wird ein Zertifikat benötigt. Das Aufbringen des Zertifikates geschieht mit Hilfsprogrammen z.B. mit SIGNTOOL.EXE von Microsoft oder zum Beispiel über die integrierte Signierungsmöglichkeit des Programms InstallAware. Während das Microsoft SIGNTOOL eine PFX-Zertifikatsdatei benötigt erfordert InstallAware ein Dateipärchen aus den SPC und PVK Signierungsdateien.

Wir beschreiben auf dieser Seite wo Sie ein passendes Zertifikat erwerben können, woher Sie das SIGNTOOL bekommen und wie es angewendet wird und wir zeigen Ihnen wie Sie ein PFX-Zertifikat in ein SPC/PVK-Zertifikat umwandeln können. Zu guter letzt wie dieses mit InstallAware eingesetzt werden.

Die Signierung von Programmen wird heute immer wichtiger. Nicht nur um für seine Anwendung ein Windows Logo erhalten zu können sind signierte EXE-Dateien wichtig. Auch Antivirenprogramme wie der DE-Cleaner vom Botnet-Beratungszentrum, melden Alarm wenn unsignierte Software im Einsatz ist.

Für Entwickler von Zusatzprodukten zu EULANDA® ist es natürlich ebenso wichtig, ihre Applets zu signieren. Diese Beispielseite wendet sich aber an alle, die Programme mit Authenticode signieren möchten.

1. Schritt: Zertifikat erwerben

Zertifikate kann man heute aus vielen Quellen erwerben und es gibt jede Menge verschiedener Zertifikatsarten. Wir benutzen hier das TrustCenter als Zertifikatsstelle. Die Webseite zur Beantragung ist übersichtlich und man kann mit wenigen Klicks sein Zertifikat beantragen. Das Zertifikat wird im Zertifikatsspeicher des Microsoft Explorers gespeichert, von wo aus es dann exportierbar ist.

Beantragung eines "TC Publisher ID for Authenticode" - Zertifikat: Zertifikat beantragen...

2. Schritt: Windows SDK installieren

Das "Windows SDK for Windows 7 and .NET Framework 4" enthält unter anderem die erforderliche Signierungssoftware SIGNTOOL um das erworbene Zertifikat anwenden zu können.  Nach Installation finden Sie das SIGNTOOL.EXE im Ordner "C:\Program files\Windows SDKs\Windows\v7.1\Bin". Es ist eigenständig lauffähig, so dass Sie es zusammen in einem Ordner mit Ihrem Zertifikat speichern können. Damit Sie das Beispiel zur Signierung ausprobieren können, sollten Sie das SIGNTOOL.EXE in den Ordner "C:\SIGN" speichern.

Installieren Sie das Windows SDK laden...

3. Schritt Zertifikat exportieren

Wenige Tage nach der Beantragung Ihres Zertifikats erhalten sie ein Email mit einem Link über den das Zertifikat in ihren Internet-Explorer eingelesen wird. Im Internetexplorer finden Sie unter Internetoptionen die Karteikarte "Inhalte" und dort die Schaltfläche "Zertifikate". Wählen Sie hier die "Exportieren..." an.

Im Export-Assistent wählen die Option "Ja, privaten Schlüssel exportieren" aus.

Auf der folgenden Seite des Assistenten achten Sie darauf das die Optionen ausgeschaltet sind, auf keinen Fall den privaten Schlüssel nach erfolgreichem Export löschen.

Nun sind sie fast fertig. Der private Schlüssel wird nun mit einem Kennwort gesichert. Verwenden Sie in jedem Fall ein langes Passwort mit Sonderzeichen. in unserem Beispiel verwenden wir als Passwort "ku$67t$6" Anschließend speichern Sie das Zertifikat auf das Desktop in den Ordner "C:\SIGN" z.B. mit Dateinamen "MyCert.pfx".

4. Schritt: Ein Programm mit SIGNTOOL signieren

Ihr Zertifikat "MyCert.pfx", die Signierungssoftware "Signtool.exe" sowie das zu signierende Programm "MyProg.exe" kopieren Sie in den Ordner "C:\SIGN". Die Signierung erfolgt mit nur einer Befehlszeile:


C:\SIGN\Signtool.exe sign /v /f C:\SIGN\MyCert.pfx /p ku$67t$6 /t http://timestamp.verisign.com/scripts/timstamp.dll C:\SIGN\MyProg.exe

Die obere Befehlszeile ist ggf. in zwei Zeilen aufgeteilt, diese muss jedoch in einer Zeile ausgeführt werden. Ein Zeilenumbruch ist dann ein Leerzeichen. Die Signierung benötigt einen authentifizierten Zeitserver, der in diesem Beispiel von Verisign zur Verfügung gestellt wird.

5. Schritt: OpenSSL installieren

Möchte man Programme mit InstallAware signieren so muss man zunächst aus dem PFX-Zertifikat ein Dateipärchen SPC/PVK erzeugen. Dies kann mit Hilfe des freien Tools OpenSSL erfolgen. Für den Zweck der Konvertierung des Zertifikatstyps genügt die Lightversion, die nur ca. 2MB groß ist.

Installieren Sie "Win32 OpenSSL v1.0.0a Light". OpenSSL laden...

Beim Installieren hat man die Möglichkeit die DLL-Dateien in das System32 oder OpenSSL-Programmverzeichnis zu installieren. Letztere Option würde ich bevorzugen. Als Installations-Pfad der Einfachheit halber C:\OpenSSL verwenden.

6. Schritt: PFX Zertifikat nach SPC/PVK umwandeln

Erstellen Sie eine Batchdatei Convert.bat, die Sie in den Ordner C:\OpenSSL\Bin kopieren. Der Batch hat folgenden Inhalt:


openssl pkcs12 -in MyCert.pfx -nokeys -out MyCertTmp.pem
pause
openssl crl2pkcs7 -nocrl -certfile MyCertTmp.pem -outform DER -out MyCert.spc
Pause
openssl pkcs12 -in MyCert.pfx -nocerts -nodes -out MyKeyTmp.pem
pause
openssl rsa -in MyKeyTmp.pem -outform PVK -pvk-strong -out MyCert.pvk
pause

"MyCert.pfx" ist ihr Zertifikat, die Dateien "MyCert.spc" und "MyCert.pvk" werden dann für das Signieren mit InstallAware benötigt. Diese drei Dateien sind Ihre Zertifikate. Sie sollten diese an einem sicheren Ort aufheben!

7. Schritt: InstallAware mit Signierung einrichten

In InstallAware 9 gibt es rechts im Projektbaum einen Knoten "Deployment" und darunter "Authenticode Signiture". In dieser Seite tragen Sie Ihre neu extrahierten Zertifikatsdateien, Ihre Homepage und das Export-Passwort Ihres Zertifikats ein.

 

Bei jedem Build Ihres Setups wird nun auch Ihr SETUP.EXE mit einer Signierung versehen. Ihr Hauptprogramm können Sie mit dem Batch aus Schritt 4 signieren oder wenn Sie möchten alternativ innerhalb von InstallAware über das Ribbon "Design" und dort auf "Code Sign" gehen.

 

Der folgende Dialog erlaubt es ein beliebiges Exe-Programm auszuwählen und zu signieren.

 

Wer gerne automatisiert wird hier statt dessen wohl eher den Batch aus Schritt 4 bevorzugen. 

Weiterführende Links