Software zum digitalen Signieren - selbstsignierendes Zertifikat

Software zum digitalen Signieren - selbstsignierendes Zertifikat

Ich möchte mit dem Signieren einer ausführbaren Softwaredatei experimentieren. Ich habe Angst, dass mir dabei etwas entgeht.

Ich werde bald ein Zertifikat von einer Zertifizierungsstelle erwerben, aber vorher möchte ich wissen, was ich tue. Deshalb habe ich einen Test gemacht:

Ich habe ein selbstsigniertes Zertifikat erstellt:

makecert -r -ss myPrivateCert -sk c:\test -n "CN=My Company Inc." testCert.cer

dann eine ausführbare Datei signiert:

signtool sign /v /s myPrivateCert /n "My Company Inc." /t http://timestamp.verisign.com/scripts/timstamp.dll c:\folder\my_installer.exe

Bei beiden Befehlen war ich erfolgreich.

Schritt 3: „Testzertifikat installieren“:http://msdn.microsoft.com/en-us/library/bb756995

Erfolg.

(Hinweis: In den Ordner c:\testhabe ich Zertifikate gelegt, die ich aus der von Microsoft vorgeschlagenen Liste kreuzbasierter Zertifikate heruntergeladen habe, ungefähr so VeriSign Class 3 Public Primary Certification Authority - G5.cer​​– ich vermute nur, dass ich das tun sollte.)

ich rennecertmgr c:\folder\my_installer.exe

und ich habe eine Liste mit 3 Zertifikaten erhalten, die ich hinzugefügt hatte, mit Betreff, Aussteller, Seriennummer ... (von My Company Inc. und Verisign), also ist anscheinend alles in Ordnung.

Selbst danach erhalte ich, wenn ich auf das Installationsprogramm (oder die ausführbare Datei) doppelklicke, die UAC-Meldung „Unbekannter Herausgeber“ …

Was muss ich also sonst noch tun, damit das Feld entweder verschwindet oder „Meine Firma Inc.“ als Produzent angezeigt wird? Und das gilt nur für den lokalen Computer, auf dem alles manuell ausgeführt wird …

Um es wirklich testen zu können, gehe ich davon aus, dass mein Client eine VirtualBox-Umgebung ist... also? Der nächste Schritt: das Installationsprogramm in eine VirtualBox verschieben und ausführen?

Aber wie erzähle ich dem Client von dem Schlüssel oder Zertifikat oder was auch immer? Kopiere ich die CER-Datei zusammen mit der EXE? Muss ich sie an einem speziellen Ort ablegen? Kopiere ich noch andere Dateien? Muss ich MMC erneut ausführen? Müssen Benutzer so etwas tun? Denn aus Benutzersicht scheint es äußerst kompliziert zu sein ... Das ist sehr verwirrend ...

Ich gehe davon aus, dass wenn ich ein echtes Zertifikat beispielsweise von Verisign kaufe, die Authentifizierung über das Internet erfolgt und ich nichts weiter tun muss (außer den beiden obigen Befehlen abzüglich des -r)?

Ich habe im Internet zahlreiche Anleitungen dazu gefunden, aber jede hat mich genauso verwirrt zurückgelassen wie am Anfang – vielleicht ging jede Anleitung von Vorkenntnissen aus …

Antwort1

Es erfolgt keine „Authentifizierung über das Internet“ (außer vielleicht durch Überprüfung der Zertifikatsperrliste (Certificate Revocation List, CRL)) – die Stammzertifizierungsstellen sind fest in das Betriebssystem integriert und werden entweder von Windows Update oder von der Installationsdiskette des Betriebssystems installiert. Mit anderen Worten handelt es sich um einen Satz statischer Daten auf der Festplatte, der nicht (einfach) geändert werden kann.

Sie können das lästige Fenster folgendermaßen verschwinden lassen:

  • Vertrauen Sie Ihrer skrupellosen Zertifizierungsstelle (in der Regel keine gute Idee, aber es funktioniert); oder
  • Lassen Sie es von einer öffentlich vertrauenswürdigen offiziellen Stammzertifizierungsstelle oder einer ihrer Vermittler signieren.

Sie haben Verisign erwähnt. Gut. Sie sind einer von mehreren möglichen Anbietern, die Ihnen ein Code-Signing-Zertifikat ausstellen können. Das Fenster wird immer noch angezeigt, da Windows meines Wissens so programmiert ist, dass bei allen selbst signierten Zertifikaten automatisch eine Warnung angezeigt wird. Wenn Sie versuchen würden, eine CSR basierend auf Ihrer selbst erstellten Stammzertifizierungsstelle zu generieren, könnten Sie das Fenster verschwinden lassen, indem Sie Ihrer Stammzertifizierungsstelle vertrauen, und das würde funktionieren. Aber dann müssten Sie Ihre Clients dazu bringen, Ihrer Stammzertifizierungsstelle zu vertrauen, was in den meisten Fällen den Zweck verfehlt. Daher ist das öffentliche Vertrauensnetzwerk der einfachste Weg. Der Anbieter gibt Ihnen normalerweise sogar explizite Anweisungen zur Verwendung seines Dienstes und zum Signieren Ihres Codes.

verwandte Informationen