Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Code Signing - Grundsatzfragen (https://www.delphipraxis.net/151308-code-signing-grundsatzfragen.html)

Ares 12. Mai 2010 09:31


Code Signing - Grundsatzfragen
 
Hallo!

Ich beschäftige mich derzeit mit dem Thema Code Signing. Die Theorie hinter dem Ganzen (was ist ein Zertifikat, wie wird ein "Dokument" signiert, PK, etc.) ist mir bekannt, nur am Verständnis der praktischen Nutzung beim Code Signing fehtl es noch :-)

Den Beitrag zur Erstellung eigener Zertifikate fand ich schon einmal sehr hilfreich. Ein paar Fragen habe ich aber noch:

Mein Ziel:
Ich möchte meine Programme (EXE, DLL aus Delphi und Visual Studio) signieren, damit unter Vista und Windows 7 nicht mehr "Herausgeber: Unbekannt" angezeigt, sondern mein Name verwendet wird.

Da ich auch kleine Programme verkaufe möchte ich nicht mit einem selbst erstellten Zertifikat arbeiten sondern mit einem "richtigen" von einem offiziellem Anbieter. Für diesen Zweck gibt es ja einige Anbieter die jeweils verschiedene Zertifikate im Angebot haben. Dazu direkt die erste Frage:

Frage 1:
Warum gibt es für verschieden Zwecke unterschiedliche Zertifikate? Ein Zertifikat ist doch eigentlich nur die Bestätigung, dass hinter der Signatur XYZ die geprüfte reale Person oder Firma ABC steht. Theoretisch kann ich mit den Schlüsseln eines Zertifikates alles signieren egal ob Worddokument, EXE-Datei oder JPG-Bild. Wo liegt der Unterschied in den Zertifikaten für unterschiedliche Zwecke? Ist das nur Produktpolitik ("Für ein bisschen EXE-Signieren bekommst du das Zertifikat für 300 EUR, wenn mehr signiert wird wirds auch teurer"), oder gibt es dazu einen echten technischen Hintergrund?

Frage 2:
Da verschiedene Zertifikate für verschiedene Zwecke angeboten werden muss ich mir das für meine Zwecke richtige aussuchen. Worauf muss ich dabei achten? Gibt es technische Bedienungen die für den Einsatz "EXE und DLLs signieren" zu beachten sind?

Frage 3:
In einem Dokument von VeriSign (Seite 4) ist zu lesen "Authenticode is currently used to sign 32-bit .exe files...". Heißt dass, dass wirklich nur 32bit EXE Dateien signiert werden können und z.B. 64 Bit EXE Dateien nicht?


Die Preisspannen der verschiedenen Anbieter sind teilweise ja sehr deutlich. Soweit ich verstanden habe ist VeriSign der einzige Anbieter der voll mit Microsoft zusammenarbeitet und daher direkt mit seinem Root-Zertifikat in Windows bekannt ist. Das kann man als Argument für die höheren Preise gelten lassen.

Den Webseiten der Anbieter habe ich folgende Preise pro Jahr entnommen:
VeriSign: 399 EUR (499$)
Thawte: 239 EUR (299$)
Comodo: 166 EUR
Certrum.eu: 135 EUR

Frage 4:
...gibt es zwischen den restlichen Anbietern nennenswerte Unterschiede? Gibt es bei einem "Billiganbieter" irgendwelche Nachteile die man berücksichtigen sollte?


Ich habe mir unter einem frischen Windows 7 im Internet Explorer (Internetoptionen\Inhalte\Zertifikate\Vertrausenwü rde Stammzertifizierungstellen) die liste der vorhanden Stammzertifikate angeschaut. Neben verschiedenen Einträgen von Microsoft und VeriSign sind hier auch Einträge von CyberTrust und Thawte enthalten.

Frage 5:
Heißen die Einträge in der Liste der Stammzertifikate, dass CyberTrust und Thawte den gleichen Vorteil haben wie VeriSign?

Frage 6:
Das Zertrifikat von Thawte ist eingetragen als "Zeitstempel". Was hat es damit auf sich?

Frage 7:
Nachdem ich mir das Zertifikat einer EXE angeschaut habe, die mit einem Comodo-Zertifikat signiert ist, stand auch USERTrust (=Comodo) ohne weiteres Zutun in der Liste der Stammzertifikate. Wie ist es dort ohne Nachfrage hinein gekommen? Gehe ich also recht in der Annahme, dass es kein allzu großer Nachteil ist, wenn man einen günstigen Anbieter wählt da dessen Zertifikate bei Bedarf direkt nachgeladen werden?


Frage 8:
Wenn ich mich nun für einen Anbieter entscheide, was erhalte ich dann von diesem? Ich gehe davon aus, dass ich nur eine Datei mit öffentlichem und privaten Schlüssel erhalte so, dass ich dann meine Dateien signieren kann. Oder brauche ich je nach Anbieter spezielle Tools um damit die Signierung durchführen zu können?


(vorerst) Letzte Frage:
Im Moment ist mir Comodo am sympathischen. Hat hiermit jemand konkrete Erfahrungen und kann Vor- und Nachteile nennen?


EDIT: Doch noch eine Frage
Genügen die angebotenen Zertifikate den Anforderungen des Windows Logo Programms?


So, dass soll es erst mal mit Fragen gewesen sein. Schon einmal vielen Dank für die Hilfe!
Ares

Phoenix 12. Mai 2010 09:46

Re: Code Signing - Grundsatzfragen
 
Zum Vorgehen:
Du erstellst zuerst einen CR (Certificate Request). Das ist ein mit Deinem bei Dir generierten privaten Key signierter Request zusammen mit einem auch von Dir generierten öffentlichen Schlüssel.

Aus diesem erstellt die Stammzertifizierungsstelle dein Zertifikat, Signiert mit ihrem privaten Key (so dass Dein Cert mit deren öffentlichen Schlüssel auf Echtheit geprüft werden kann). Dieses Zertifikat enthält auch Deinen öffentlichen Schlüssel.

Das heisst, also, wenn jemand das Cert. prüft, weiss er, dass Dein öffentlicher Schlüssel zumindest von der Stammzertifizierungsstelle als Deiner geführt wird. Mit Deinem Schlüssel wird dann die Signatur der Datei geprüft, die Du ja mit Deinem privaten Schlüssel machst -> Alles in Butter.

Bernhard Geyer 12. Mai 2010 09:50

Re: Code Signing - Grundsatzfragen
 
2: Du brauchst Code-Signing nach Microsoft® Authenticode®

3: Geht auch 64-Bit (http://www.verisign.de/code-signing/...ode/index.html)

4: Bei Verisign ist es möglich das bei Anwendungsabstürzen der Callsstack+Umgebung an MS gesendet wird und du es dort abholen kannst um den Fehler nachzuvollziehen. Haben wir bisher nicht gemacht.


5: Wenn die nötigen Root-Zertifikate schon bei "frischen" Windows vorhanden sind das hat du überall die gleichen Vorteile bzgl. Warnmeldung.

8: Die nötigen Tools sind in den SDK's von MS vorhanden. Habe hier das Microsoft Platform SDK for Windows Server 2003 R2 im einsatz (unter Vista). Letztendlich brauchst du die "signtool.exe" welche noch die capicom.dll zieht.

Ares 12. Mai 2010 09:52

Re: Code Signing - Grundsatzfragen
 
Hallo Phoenix!

Schon mal vielen Dank für die Antwort. Also das Schlüsselpaar wird von mir selbst erstellt und nicht von der Zertifizierungsstelle? Das ist mir schon mal neu. Vielen Dank für den Hinweis.

Die Erstellung des Schlüssels wird dann z.B. mit makecert.exe vorgenommen oder gibt es da besondere Dinge zu beachten?

Achim Kalwa 12. Mai 2010 21:59

Re: Code Signing - Grundsatzfragen
 
Zitat:

Zitat von Ares
Die Erstellung des Schlüssels wird dann z.B. mit makecert.exe vorgenommen oder gibt es da besondere Dinge zu beachten?

Typischerweise macht das ein Active-X Plugin im Internet-Explorer.
Bei einigen Anbietern geht das wohl auch mit Firefox, aber Comodo unterstützt wohl nur den IE.

Bei Certum.eu wird übrigens öfters mal auf Certum.pl weiter geleitet; ab da musst Du Polnisch können um weiter zu kommen :-( Für mich ein klarer Minuspunkt.

Noch günstiger ist ksoftware.net; ein Reseller von Comodo:
https://secure.ksoftware.net/code_signing.html

Da kostet das benötigte Zertifikat nur 99 US$ für ein Jahr; umrechnen in Euro überlasse ich Dir :-)
Dort habe ich mein Code Signing Certificate bestellt; die gesamte Abwicklung erfolgte aber via Comodo.

Du bekommst eine Datei zurück, die Du gut aufheben solltest :-)

Nach dem Import der Datei in den IE (Zertifikatspeicher) kann man daraus eine PFX-Datei erzeugen (und mit einem Passwort versehen), die dann von SignTool.exe verwendet wird um Deine Exe zu signieren. Dabei muss das zuvor gewählte Password wieder eingegeben werden.

Ich hoffe, das beantwortet schon mal einen Teil Deiner Fragen.

KalwaDOS

Ares 13. Mai 2010 08:23

Re: Code Signing - Grundsatzfragen
 
Hallo KalwaDOS!

Vielen Dank für deine Antwort! Die Preise von ksoftware.net klingen ja sehr interessant :-)

Das Stammzertifikat von Comodo ist ja nicht automatisch in Windows enthalten. Hast du Erfahrungen damit, wie das Zertifikat dort angezeigt wird? Muss der Nutzer das Zertifikat erst manuell akzeptieren, ein Stammzertifikat-Update installieren oder ähnliches? Oder wird das Zertifikat automatisch (auch in älteren Windows Versionen?) korrekt erkannt und angezeigt?

Gibt es bei diesem "Discount" Zertifikat noch irgendwelche Besonderheiten die man beachten sollte? Oder hast du nur gute Erfahrungen damit gemacht? In dem Fall würde ich die 99$ einfach mal riskieren und versuchen mir die weiteren Fragen in der Praxis selber zu beantworten :-)

Besten Dank
Ares

Achim Kalwa 13. Mai 2010 12:21

Re: Code Signing - Grundsatzfragen
 
Zitat:

Zitat von Ares
Das Stammzertifikat von Comodo ist ja nicht automatisch in Windows enthalten.

Ist es nicht?
Bei Microsoft ist es aber gelistet:
http://download.microsoft.com/downlo...ber%202009.pdf

Ich werde nachher mal eine frische VM aufsetzen und prüfen, was bei meinen Anwendungen so angezeigt wird.

Updates der Stammzertifikate werden von Microsoft per Windows-Update ausgeliefert.
Man kann das auch manuell nachinstallieren:
http://support.microsoft.com/kb/931125

rwachtel 13. Mai 2010 14:07

Re: Code Signing - Grundsatzfragen
 
Zitat:

Zitat von Ares
[...] Vielen Dank für deine Antwort! Die Preise von ksoftware.net klingen ja sehr interessant :-) [...]

Noch günstiger (bei gleicher Leistung, da ebenfalls Reseller von Comodo) ist es bei https://author.tucows.com

Nach (kostenfreier) Registrierung als Software-Autor kann man unter Home->Resources->Code Signing Certificates bei Comodo Zertifikate für 75 US$ pro Jahr bestellen (oder 140 US$ für zwei Jahre oder 195 US$ für drei Jahre).

Die Abwicklung geschieht hier genau wie bei ksoftware.net direkt über Comodo.

Ich kann es nur empfehlen - und einen günstigeren Anbieter habe ich bisher auch noch nicht gesehen.

ak-ac 31. Mai 2010 19:08

Re: Code Signing - Grundsatzfragen
 
ist das dann eingeschränkt für shareware tools oder kann man das auch mit kommerzieller software nutzen? klingt mit der registrierung irgendwie so...

rwachtel 1. Jun 2010 11:52

Re: Code Signing - Grundsatzfragen
 
Wo klingt das eingeschränkt? Ein Comodo-Zertifikat ist ein Comodo-Zertifikat. Punkt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz