In Teil Eins wurde ein Sidebar Gadget als Vorbereitung für das Signieren vom simplen ZIP-Format in eine CAB-Datei gepackt. Teil Zwei beschreibt nun, wie Sie (beliebigen) Programmcode selbst mit einem Zertifikat versehen können.
Nun, haben Sie ein eigenes digitales Zertifikat?
Wenn ja: fein. Wenn nein: auch gut. Dann erstellen wir uns einfach ein eigenes Zertifikat!
Variante 1: Selbsterstelltes Zertifikat erzeugen und verwenden
Wir benötigen das Tool makercert. Das Tools ist Bestandteil von Microsoft Visual Studio 2005 Platform SDK und im Verzeichnis C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin zu finden. Makecert erstellt ein X.509-Zertifikat mit öffentlichem und privatem Schlüssel - allerdings nur zu Testzwecken. Innerhalb Ihrer Firma wäre das aber wahrscheinlich schon ausreichend.
Wenn Sie kein Visual Studio 2005 installiert haben, können Sie alternativ das Microsoft® .NET Framework Software Development Kit (SDK) version 1.1 herunterladen und das Tool von hier verwenden (Hinweis: im Internet Explorer Administration Kit Download sind diese Tools _nicht_ mehr vorhanden).
cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
makecert -sv "C:\Projekte\VistaGadgets\Deploy\pwdgen.pvk" -n "CN=www.atwork.at" C:\Projekte\VistaGadgets\Deploy\pwdgen.cer
Passen Sie Pfad und Dateiname sowie den common name an. Damit werden der öffentliche Schlüssel .cer und der private Schlüssel .pvk erzeugt. Diese werden später benötigt.
Variante 2: Eigenes öffentliches Zertifikat verwenden
Wenn Sie - so wie ich - ein digitales Zertfikat besitzen, bereiten Sie Ihre Hardware vor (in meinem Fall ein persönliches Zertifikat von a-trust: USB-Kartenleser anschließen, Chipkarte einlegen, a.sign-Client _nicht_ öffnen weil sonst das Kartensystem in Verbindung mit dem folgenden, gleichzeitigen Zugriff verwirrt ist... etc).
Weiter mit dem Signieren...
Benötigt wird signtool.exe (welches ab 2003 die Vorgängerversion signcode.exe ersetzt), ebenfalls aus dem Microsoft Visual Studio 2005 Platform SDK.
cd C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
signtool signwizard
Nach Willkommen-Dialog und Auswahl des zu signierenden Programmfiles (in unserem Beispiel: C:\Projekte\VistaGadgets\Deploy\pwdgen.gadget = die erstellte CAB-Datei).
Wählen Sie Benutzerdefiniert.
Wählen Sie bei eigenem Zertifikat "Aus Speicher wählen" - soferne Sie ihr Zertifikat bereits einmal zum Zertifikatspeicher hinzugefügt haben - was empfehlenswert ist :-)
Wenn Sie zuvor mit makecert ein eigenes (Test-)Zertifikat erstellt haben, verwenden Sie "Aus Datei wählen" und geben in den folgenden Schritten die Dateien .cer und .pvk an! Wählen Sie dann "Priv. Schlüssel auf Datenträger".
Wählen Sie das Zertifikat.
Nun weiter.
Bestätigen Sie mit Weiter.
Auswahl der Verschlüsselung - wahlweise.
Und weiter.
Eingabe der eigenen Informationen.
Wenn gewünscht, einen Timestamp zum Zeitpunkt der Signierung hinzufügen, z.B.: http://timestamp.verisign.com/scripts/timstamp.dll
Und Fertigstellen.
Das war das SignTool. Wenn Sie das Zertifikat auf einen Kartenleser haben, folgt nun die Eingabe der PIN.
Und wenn alles ok gegangen ist die Erfolgsmeldung.
Das wars!
Die signierte Datei pwdgen.gadget sollte nun um ein paar KB größer als zuvor sein. Kontrollieren Sie die Datei-Eigenschaften - hier findet sich nun eine neue Registerkarte "Digitale Signatur".
Schaut soweit gut aus. Nun die Kontrolle: Starten der Anwendung - in unserem Fall mit Doppelklick auf pwdgen.gadget:
Die zu installierende Software besitzt nun einen Herausgeber und einen Vertrauensgrad - in meinem Fall leider "nur" gelb, da a-trust anscheinend standardmäßig leider nicht von Root weg vertraut wird. Grün wirds, wenn der ganzen Vertrauenskette vertraut wird.
Damit ist sichergestellt, dass die Anwendung vom angegebenen Hersteller stammt und unverändert ist. Anwender erhalten somit Sicherheit über die zu installierende Software - zum Beispiel, dass sie von der eigenen IT ausgerollt und geprüft wurde.
Es gibt natürlich weitere Methoden, Software selbst zu signieren. Mit SignTool und dem eingebauten Wizard ist dies allerdings recht einfach und zweckmäßig.
...Nie wieder Software von unbekannten Herausgebern installieren! :-)
Beitrag von Toni Pohl