Signieren von Code

    • Allgemein

      Signieren von Code

      Digitale Signatur
      Um einen Code oder eine Website zu signieren, benötigt man eine "Digitale Signatur". Diese kann man u.a. bei verisign, Comodo und GlobalSign gegen einen nicht unerheblichen Kostenaufwand erwerben.
      Es gibt aber auch einige kostenfrei Alternativen.
      Die erste ist man erstellt sich eine eigene Signatur mit dem Programm selfcert.exe von Microsoft. Hier ist der Nachteil, dass diese Signatur nicht verifizierbar ist.
      Eine weitere ist die Signatur über einen Web of Trust bestätigt zu bekommen. Eines dieser Web of Trust ist CAcert.
      CAcert
      Zunächst muss man sich erst einmal auf cacert.org registrieren. Da man bei der Registration der Community beitritt, sollte man die Communitysatzung ("CCA") zunächst aufmerksam lesen, da man diese akzeptieren muss.
      Nach der Anmeldung kann man schon eine erste "Digitale Signatur" erhalten. Diese ist allerdings nur 6 Monate gültig, enthält nicht den Namen und kann nur zum Signieren von E-Mails verwendet werden.
      Wenn man seine Identität von anderen Mitgliedern bestätigen lässt, bekommt man Punkte zugeschrieben. Ab 50 Punkten erhält man eine Signatur die 2 Jahre gültig ist und die den Namen und die E-Mail-Adresse enthalten kann. Wenn man 100 Punkte erreicht hat und die Assurer-Prüfung bestanden hat, erhält man die Möglichkeit "Code-Signing-Zertifikate" zu erstellen und diese zu nutzen. Die Gültigkeit liegt hier wiederum bei 2 Jahren.
      Wie wird man von den Mitgliedern bestätigt?
      Dazu muss man die Mitglieder persönlich treffen und sich bei diesem Treffen mit einem amtlichen Lichtbildausweis (Personalausweis, Reisepass) ausweisen. Wichtig für Minderjährige: es muss eine schriftliche Erlaubnis der Eltern für den Beitritt vorliegen. Am besten hier svn.cacert.org/CAcert/Events/P…oJAM/ParentsKit_DE-1p.pdf nachschauen.
      Wo findet man Mitglieder?
      Zum Einem besteht auf vielen OpenSource-Veranstaltungen und einigen Messen z.B. Cebit die Möglichkeit sich am CAcert-Stand bestätigen zu lassen. Zum Anderen hat man nach der Anmeldung die Möglichkeit, Mitglieder über die Website in seiner Umgebung zu finden.
      Wie viele Punkte kann ich bekommen?
      Bei einer Bestätigung können vom prüfenden Mitglied 10-35 Punkte vergeben werden. Diese Punktzahl richtet sich nach der Erfahrung des Prüfers und dem Vertrauen, das der Prüfer den vorgelegten Dokumenten zur Identifizierung entgegen bringt. Meistens reicht die Bestätigung durch 3 Mitglieder aus, um die 100 Punkte zu erhalten.

      Einfügen der Signatur an den Code
      Von Microsoft wird mit der Anwendung SignTool.exe ein Werkzeug zur Verfügung gestellt, dass das digitale Signieren von Dateien ermöglicht. SignTool.exe findet sich in .Net Framework SDK.
      Es gibt zwei Varianten SignTool.exe einzusetzen:
      1) Mit einem integrierten Wizard
      Dafür das Programm mit folgendem Parameter gestartet:
      signtool.exe signwizard

      2) Direkt über die Kommandozeile.
      Schritt 1: Zertifikat auswählen
      Aus dem Zertifikatsspeicher: Mit dem Parameter /a weißt man das SignTool an, im Zertifikatsspeicher nach einem geeigneten Zertifikat zu suchen. Stehen mehrere Zertifikate zur Auswahl wird das Zertifikat benutzt, welches am längsten gültig ist.
      Aus einer PFX Datei: Wer das Zertifikat nicht im Zertifikatsspeicher des Computers installiert hat, kann mit dem Parameter /f eine PFX-Datei angeben, welche neben dem Öffentlichen auch den Privaten Schlüssel enthält. Ist die PFX-Datei Passwortgeschützt, kann dieses mit dem Parameter /k mitgegeben werden.

      Beispiel zum Zertifikatsspeicher:

      signtool.exe sign /a MyFile.exe

      Beispiel mit einer PFX-Datei:

      signtool.exe sign /f "D:MeinZertifikat.pfx" /k "[MeinSicheresKennwort]" MyFile.exe

      Schritt 2: Timestampserver festlegen (optional)
      Man hat mit dem SignTool die Möglichkeit, der Signatur einen Zeitstempel hinzuzufügen.
      Dies hat neben dem genauen Signaturdatum noch einen weiteren Vorteil:
      Die Gültigkeit der Signatur ist, bei einer Signierung ohne Zeitstempel, auf die meines Zertifikates beschränkt. Wird der Signatur nun eine Gegensignatur des Zeitstempelservers hinzugefügt, ist die Signatur auch nach Ablauf der Gültigkeitsperiode meines Zertifikats noch solange gültig, wie das Ablaufdatum des Zertifikats mit welchem gegensigniert wurde.
      Diese Timestampserver können auch mit dem CAcert-Zertifikat eingesetzt werden. Weitere Timestampserver siehe unten.

      Beispiel:
      signtool.exe sign /a /t "http://timestamp.comodoca.com/authenticode" MyFile.exe
      3) In Visual Studio im Postbuild-Ergeignis des Projektes
      In Visual Studio kann die Signatur im Postbuild-Ereignis angewandt werden. Dazu wird Projekt - Eigenschaften – Kompilieren genutzt. Am Ende des Fenster steht die Schaltfäche Buildereignisse dort kann die folgende Anweisungen eingegeben werden:

      signtool sign /f "lw:..pfx" /p "kennwort" /d "Test" /t "http://timestamp.comodoca.com/authenticode" "$(TargetPath)"
      alternativ

      signtool sign /a /d "Meine Anwendung" /t "http://timestamp.verisign.com/scripts/timstamp.dll" "$(TargetPath)"


      Alternative TimeStampServer

      timestamp.comodoca.com/authenticode

      timestamp.globalsign.com/scripts/timstamp.dll
      NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „INOPIAE“ ()