60 Stimmen

Was passiert, wenn ein Code Signing-Zertifikat abläuft?

Ich erwäge, ein Code Signing-Zertifikat von VeriSign oder Thawte zu erwerben, um damit ein XBAP zu signieren. Meine Frage ist folgende: Was passiert, wenn dieses Zertifikat abläuft? 299 $ und 599 $ sind ziemlich saftige Preise für 1-Jahres-/2-Jahres-Zertifikate, und wenn ich meinen Kunden ein neu signiertes Build liefern muss, sobald mein Zertifikat abläuft, dann werde ich mich erst einmal mit der Erstellung meines eigenen Zertifikats beschäftigen.

Was mir an der Erstellung meines eigenen Zertifikats nicht gefällt, ist die Schwierigkeit, es an alle Client-Computer zu verteilen, die meinen XBAP verwenden werden. Meine Anwendung wird nur in einem LAN verwendet werden, so dass ich vermutlich immer Windows Installer verwenden könnte, um mein selbst erstelltes Zertifikat zu installieren (obwohl ich nicht weiß, wie das geht - hat jemand eine Idee?).

Dies wäre nicht wirklich ein Problem, wenn ich eine teilweise vertrauenswürdige Anwendung bereitstellen würde - aber meine Anwendung benötigt Webberechtigungen, da sie mit WCF-Diensten kommunizieren wird, so dass sie sich in der Grauzone zwischen teilweisem und vollem Vertrauen befindet, und ohne ein Zertifikat erhalte ich die lustige alte Meldung "Vertrauen nicht gewährt", wenn ich versuche, meine XBAP zu laden.

Irgendwelche Ideen?

2 Stimmen

Www.CACert.org ist eine gemeinnützige Organisation, die Code-Signatur-Zertifikate kostenlos für vertrauenswürdige Personen anbietet.

5 Stimmen

FF-Nachricht: "www.cacert.org verwendet ein ungültiges Sicherheitszertifikat. Das Zertifikat ist nicht vertrauenswürdig, da das Ausstellerzertifikat unbekannt ist."

0 Stimmen

Verwenden Sie KSoftware. Aufrechter Kerl, seit Jahren dabei, ich kenne ihn persönlich. codesigning.ksoftware.net

93voto

Martin Vobr Punkte 5673

Wenn Sie Ihren Code mit einem Zeitstempel versehen, solange das Zertifikat gültig ist die Wirkung ist, dass Ihre abgelaufenen Zertifikate gut sind.

Von FAQs zum Thawte Code Signing-Zertifikat :

Wie lange kann ich ein Code Signing-Zertifikat verwenden?

  • Code Signing-Zertifikate sind 1 oder 2 Jahre lang gültig, je nachdem, welchen Lebenszyklus Sie beim Kauf des Zertifikats wählen. Bitte beachten Sie: Für Microsoft® Authenticode® (Multi-Purpose) sollten Sie Ihren signierten Code auch mit einem Zeitstempel versehen, um zu vermeiden, dass Ihr Code mit dem Ablauf Ihres Zertifikats verfällt.

Ist der mit einem Zeitstempel versehene Code nach Ablauf eines Code Signing-Zertifikats gültig?

  • Microsoft® Authenticode® (Multi-Purpose) ermöglicht es Ihnen, Ihren signierten Code mit einem Zeitstempel zu versehen. Durch den Zeitstempel wird sichergestellt, dass der Code nicht abläuft, wenn das Zertifikat abläuft, da der Browser den Zeitstempel validiert. Der Zeitstempel-Dienst wird mit freundlicher Genehmigung von VeriSign bereitgestellt. Wenn Sie den Zeitstempel-Service beim Signieren von Code verwenden, wird ein Hash Ihres Codes an den Server von VeriSign gesendet, um einen Zeitstempel für Ihren Code aufzuzeichnen. Die Software eines Benutzers kann zwischen Code unterscheiden, der mit einem abgelaufenen Zertifikat signiert wurde, dem nicht vertraut werden sollte, und Code, der mit einem Zertifikat signiert wurde, das zum Zeitpunkt der Signatur des Codes gültig war, aber später abgelaufen ist.

1 Stimmen

Sie müssen einen vertrauenswürdigen Peer und einen digitalen Zeitstempel verwenden, damit Ihre Anwendung nach der Signierung ad vitam gültig bleibt.

0 Stimmen

Wenn Sie sich die Eigenschaften der Binärdatei ansehen, nachdem der Code abgelaufen ist, gibt es dann noch eine Registerkarte für die digitale Signatur?

1 Stimmen

Beachten Sie meine Antwort zu Windows Defender weiter unten. Sie wollen nicht, dass Ihr Zertifikat abläuft, also besorgen Sie sich ein 10-Jahres-Zertifikat.

31voto

James Newton Punkte 674

Achten Sie auf Zertifikate mit gesetztem WTD_LIFETIME_SIGNING_FLAG: Es bedeutet (entgegen dem, was der Name vermuten lässt), dass ein mit diesem Zertifikat signiertes Programm ungültig wenn das Zertifikat abläuft, obwohl sich das Programm nicht geändert hat und das Zertifikat zum Zeitpunkt der Unterzeichnung gültig war.

Dies wirkt sich auch auf Aktualisierungen aus, denn selbst wenn der Kunde das Kontrollkästchen für das Vertrauen in alle Programme Ihres Unternehmens aktiviert, schlägt das Vertrauen fehl, wenn Ihr Aktualisierungsprogramm nicht mit demselben Zertifikat signiert ist (oder das Zertifikat abläuft).

Von: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx


Zeitstempelverarbeitung mit Lifetime Signing Semantik

Anwendungen oder Zertifizierungsstellen, die nicht wollen, dass zeitgestempelte Signaturen für einen unbestimmten Zeitraum erfolgreich geprüft werden, haben zwei Möglichkeiten:

- Legen Sie die lebenslange Signierer-OID im Signierzertifikat des Herausgebers fest.

Wenn das Signierzertifikat des Herausgebers neben der PKIX Code Signing OID auch die Lifetime Signer OID enthält, wird die Signatur ungültig, wenn das Signierzertifikat des Herausgebers abläuft, auch wenn die Signatur mit einem Zeitstempel versehen ist. Die Lebenszeit-Signierer-OID ist wie folgt definiert:

szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13

- Setzen Sie das WTD_LIFETIME_SIGNING_FLAG in der WINTRUST_DATA-Struktur beim Aufruf von WinVerifyTrust.

Wenn ein WinVerifyTrust-Aufrufer WTD_LIFETIME_SIGNING_FLAG in der WINTRUST_DATA-Struktur setzt und das Signierzertifikat des Herausgebers abgelaufen ist, meldet WinVerifyTrust die Signatur als ungültig, selbst wenn die Signatur mit einem Zeitstempel versehen ist.

Wenn ein Herausgeber ein Code Signing-Zertifikat widerruft, das die Lifetime Signer OID enthält, oder ein WinVerifyTrust-Aufrufer WTD_LIFETIME_SIGNING_FLAG in der WINTRUST_DATA-Struktur setzt, meldet WinVerifyTrust die Signatur als gültig, wenn beide der folgenden Bedingungen erfüllt sind:

- Der Zeitstempel der Signatur wurde vor dem Datum des Widerrufs angebracht.

- Das Signierzertifikat ist noch innerhalb seiner Gültigkeitsdauer. Nach Ablauf der Gültigkeitsdauer wird die Signatur ungültig.


Zum Beispiel: https://forum.startcom.org/viewtopic.php?f=15&t=2215&p=6827&hilit=lifetime+Unterzeichnung#p6827

Das ist ein ernstes Problem mit StartSSL-Zertifikaten. Es überrascht mich nicht, dass es bei einem Zertifikat, das so wenig kostet, Einschränkungen gibt, aber diese Einschränkung im Kleingedruckten oder in einem alten Forenbeitrag zu verbergen, anstatt sie in der Produktbeschreibung deutlich zu machen, ist ein schlechtes Geschäft. Möglicherweise wird das Problem in Zukunft behoben, und andere Anbieter haben möglicherweise die gleiche Einschränkung, so dass eine E-Mail zur Überprüfung vor dem Kauf sinnvoll sein könnte.

Raten Sie mal, wer nicht wusste, dass er fragen sollte? LOL... na ja, man lernt nie aus.

0 Stimmen

Der Link zum startcom-Forum ist tot. Hier ist die archivierte Version: web.archive.org/web/20160405182742/https://forum.startcom.org/

0 Stimmen

Also... es ist wirklich die frente a was der Name schon andeutet. Entworfen von Microsoft?

13voto

BCran Punkte 1901

Wenn Sie beim Signieren von Binärdateien darauf achten, einen Zeitstempel hinzuzufügen, müssen Sie sie nicht erneut signieren, wenn das Zertifikat abläuft. Fügen Sie einfach "/t http://timestamp.verisign.com/scripts/timstamp.dll "in die Befehlszeile von signtool ein, und die digitale Signatur wird immer als gültig markiert, es sei denn, das Zertifikat wird widerrufen und die CA ist vertrauenswürdig.

Der Grund, warum Code Signing-Zertifikate so teuer sind, liegt darin, dass jemand überprüfen muss, ob Sie derjenige sind, der Sie vorgeben zu sein. In meinem Fall wurden die Adresse und die Telefonnummer überprüft, und ich wurde angerufen. Die Zertifikate von Comodo scheinen allerdings etwas billiger zu sein.

0 Stimmen

Kann jemand bestätigen, dass die oben angegebene VeriSign-Zeitstempel-URL nur für VeriSign-Zertifikate gültig ist? Das ist meine Vermutung.

3 Stimmen

Will: Nein, es funktioniert mit Zertifikaten von jedem Anbieter. Ich habe es mit meinem Globalsign-Zertifikat verwendet.

0 Stimmen

Link von timestamp.dll kann nicht geöffnet werden.

7voto

Fernando Miguélez Punkte 11068

Wenn Sie das Programm in einer geschlossenen Umgebung (LAN) verwenden möchten, sollten Sie eine eigene CA einrichten. Windows Server-Versionen enthalten eine einfach zu verwendende Zertifizierungsstelle, aber noch einfacher ist es, eine minimale CA mit Hilfe der DemoCA einzurichten, die von openssl , das aus mehreren Skripten besteht. Sie können openssl demoCA ausführen in Cygwin unter Windows oder gebürtig . Diese DemoCA besteht aus mehreren Perl/Bash-Skripten, die openssl-Befehle aufrufen, um Anfragen zu generieren, Zertifikate/Crls zu signieren usw.

Wenn Sie Ihre eigene CA haben, müssen Sie nur Ihr CA-Root-Zertifikat installieren, so dass Sie keine Probleme mehr haben, die Benutzerzertifikate zu aktualisieren, da das CA-Zertifikat dasselbe bleibt. Normalerweise sollte ein CA-Zertifikat 5-10 Jahre lang gültig sein, aber Sie können es so lange konfigurieren, wie Sie wollen (denken Sie daran, dass es Ihre eigene CA ist).

Das CA-Zertifikat wird auf jedem Client-Rechner installiert. Wenn Ihre Anwendung der Windows-Systemsicherheit vertraut, sollte es im Schlüsselspeicher der IExplorer-Zertifizierungsstelle installiert werden. Wenn Sie eine Java-Anwendung verwenden, sollten Sie das CA-Zertifikat in den von Ihnen verwendeten Java-Keystore einbinden.

0 Stimmen

Danke Fernando - ich bin allerdings etwas verwirrt - wie wird das CA-Zertifikat auf jedem Client-Rechner installiert? Muss das manuell geschehen?

0 Stimmen

Ja. Der direkteste Weg ist, dies manuell zu tun. Speichern Sie einfach Ihr Zertifikat mit der Erweiterung ".cer" oder ".der". Doppelklicken Sie darauf und Windows wird Ihnen einen Assistenten zum Importieren anbieten.

47 Stimmen

Alles gute Informationen, aber "Was passiert, wenn ein Code Signing-Zertifikat abläuft?"

2voto

Diego Jancic Punkte 6913

Ich hatte gerade dieses Problem. Ich fand in diesem Artikel die Erklärung und zusammen mit @BCran's Antwort Ich habe es gelöst. Zusammenfassung:

  • Das Zertifikat muss standardmäßig gültig sein während Validierung (wenn der Client das Programm öffnet, nicht während der Kompilierung)
  • Damit das Zertifikat für immer gültig ist, müssen Sie das Programm mit einem TimeStamping-Server signieren. Damit wird bestätigt, dass Sie die Uhrzeit Ihres Computers nicht geändert und ein altes Zertifikat verwendet haben. Wenn Sie einen TimeStamping-Server verwenden, müssen Sie Ihren Code nicht jedes Mal neu eingeben.

So würden Sie es zum Beispiel in VS.NET 2017 machen:

code signing visual studio 2017

Wenn die URL nicht funktioniert, können Sie einen beliebigen Dienst verwenden. Hier sind einige URLs, die funktionieren: https://stackoverflow.com/a/9714864/72350

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X