Assembly signieren mit der SuisseID

Einleitung
Damit Assemblies, welche erweiterte Rechte benötigen, die "unschönen" UAC-Dialoge mit "Publisher: Unknown" abzugewöhnen, müssen diese signiert werden.

Da jedes Zertifikat mit Kosten verbunden ist, entstand die Idee dafür das Zertifikat der SuisseID zu benützen. Die SuisseID bietet eine vollqualifizierte Signatur, aber der private Schlüssel lässt sich nicht exportieren. Deshalb lässt sich dieses Zertifikat nur über einen kleinen Umweg einsetzen.

Die meisten Entwicklungs­- und Installations-Umgebungen erwarten ein Personal Information Exchange Zertifikat (PFX) zur Signierung von Assemblies.

Das auf dem SuisseID-USB-Stick gespeicherte Zertifikat wird beim Anschliessen automatisch im "Windows Certificate Store" registriert. Von hier lässt sich das Zertifikat, aber ohne den privaten Schlüssel, exportieren.

Assembly signieren in Visual Studio 2010
Im Microsoft Windows SDK ist ein Tool enthalten, welches das Signieren von Assembly ermöglicht.

Die aktuelle Version von SignTool bietet die Option das am besten geeignete Zertifikat zu verwenden. Somit kann auch die SuisseID verwendet werden. Falls SignTool nun dieses Zertifikat wählt, öffnet der gewohnte Passwort-Dialog und signiert nun das Assembly.

Mit folgender Befehlszeile in den Visual Studio "Post-builds events" wird das Assembly signiert und mit einem Zeitstempel versehen:

if $(ConfigurationName)==Release "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe" sign /a /tr "http://tsa.swisssign.net"  "$(TargetPath)"

Der grosse Nachteil ist natürlich, dass der Build-Prozess so nicht automatisiert werden kann.
Weitere Informationen zum Microsoft Windows SDK.

Setup-Datei signieren in InstallShield 2011 Limited Edition for Visual Studio 2010
Diese Version von InstallShield kann zusätzlich in Visual Studio 2010 nachinstalliert werden und ist gratis.

Aber auch diese Umgebung zum Erstellen von Setup-Dateien benötigt Zertifikate mit einem privaten Schlüssel.

Mit einem kleinen Trick lässt sich auch InstallShield 2010 Limited Edition dazu bewegen, die SuisseID zu verwenden.

Dazu sind drei Schritte notwendig:

  1. Das Zertifikat aus dem "Windows Certificate Store" exportieren.
  2. Die SignTool-Version vom Windows SDK ins InstallShield kopieren (evtl. die Originalversion umbenennen).
  3. Im InstallShield 2010 Limited Edition Setup-Projekt und "Release" das exportierte Zertifikat zuweisen.

Nun verwendet auch InstallShield die SuisseID und beim Build muss das SuisseID-Passwort eingegeben werden.

Das SuisseID Zertifikate exportieren
Alle Zertifikate, welche in Windows registriert sind, können im "Windows Certificate Store" verwaltet werden.

  1. Öffnen Sie eine Microsoft Management Console indem Sie im Startmenü mmc eingeben und den folgenden UAC-Dialog bestätigen.
  2. Via Menü File - "Add/Remove Snap-in…" oder mit "Ctrl-M" gelangen Sie in den Snap-in Dialog
  3. Hier fügen Sie das "Certificate" Snap-in für den aktuellen Benutzer, hinzu.
  4. Unter "Personal" finden Sie dann zwei SuisseID-Zertifikate.
  5. Wählen Sie dasjenige mit dem Zusatz "Qualified Signature" aus und exportieren dieses via rechte Maustaste "All Tasks - Export…".
  6. Es öffnet sich ein Assistent, der Sie durch alle Schritte leitet. Sie können alle vordefinierten Einstellungen beibehalten und wählen den Speicherort und den Namen für das exportierte Zertifikat.

That's it.

QuickGuide als PDF herunterladen