2009-05-26 6 views
10

Ich las What happens when a code signing certificate expires - Stack Overflow und fragte mich nach einer solideren Antwort. Die Antwort lautete mehr über das Einrichten einer eigenen Zertifizierungsstelle. Auch mit Ihrer eigenen CA müssen Sie noch mit ablaufenden Code-Zertifikaten umgehen.Wie kann ich verhindern, dass mein Code alle 1 oder 2 Jahre neu signiert wird?

Wenn Sie den Code ohne Verwendung eines Zeitstempeldienstes signiert haben, wird Ihr Code nach Ablauf des Zertifikats nicht mehr vertrauenswürdig sein und abhängig von den Sicherheitseinstellungen möglicherweise nicht mehr ausgeführt. Sie müssen Ihren gesamten Code alle ein oder zwei Jahre mit einem neuen oder einem erneuerten Zertifikat neu signieren.

Vertrauenswürdiger (digitaler) Zeitstempel ermöglicht die Gültigkeit der digitalen Signatur, auch wenn das Zertifikat selbst abgelaufen ist. Sie müssten Code mit dem neuen Zertifikat nur dann neu signieren, wenn Sie Änderungen vorgenommen haben.

Klingt das alles korrekt? Wenn ja, brauche ich Empfehlungen, welchen Zeitstempel-Dienst zu verwenden ist, vorzugsweise von jemandem, der tatsächlich einen verwendet hat. Ich würde auch gerne wissen, ob es Inhouse-Lösungen gibt, ähnlich wie eine eigene CA.

Im Moment gilt dies für PowerShell-Skripte, aber ich werde schließlich das gleiche Problem mit anderem Code haben.

aktualisieren: Beispiel dafür, wie ein PS-Skript mit einem Zeitstempel zu unterschreiben (Sie ein Skript für diese machen):

Set-AuthenticodeSignature -filepath "D:\Projects\A Sample\MyFile.ps1" 
    -cert gci cert:\CurrentUser\My -codesigning 
    | where -Filter {$_.FriendlyName -eq "Thawte Code Signing"} 
    -IncludeChain All 
    -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll" 

, dann das Signer Zertifikat und Timestamper Zertifikat zu sehen, können Sie tun dies:

Get-AuthenticodeSignature MyFile.ps1 | fl * 

Es gibt Ihnen den Betreff (CN, OU, etc.), Issuer, Vorher/Nachher Termine und Thumbprints für beide Ihre cert und der CERTs timestamper. Sie erhalten auch eine Nachricht, die den Status der Signatur angibt.

Antwort

9

Sie wählen einen der vertrauenswürdigen Zertifikatanbieter (Verisign, Thawte, Comodo usw.) aus. Auf diese Weise können Sie Ihre Software signieren, ohne dass der Benutzer Ihrer privaten Stammzertifizierungsstelle ausdrücklich vertraut. Wir haben sowohl Verisign als auch Thawte, Comodo und GoDaddy mit Timestamping verwendet, ohne dass die Software auch Jahre nach Ablauf des Zertifikats ungültig wird.

+3

+1: Allgemeine Idee: Verwenden Sie einen global vertrauenswürdigen Anbieter. –

+0

Mit Verisign und Thawte hast du auch Timestamping? Ohne das Timestamping würden sich einige Systeme darüber beschweren, dass das Cert abgelaufen ist und nicht Ihren Code ausführen? – Bratch

+0

@Bratch: Ja, Sie müssen ihren Zeitstempelserver verwenden. Wir haben nie ohne sie veröffentlicht, daher kann ich keine nicht zeitgestempelten Anwendungen kommentieren. –

8

Zeitstempelung ist ein kostenloser Dienst - es ist nur ein vertrauenswürdiger Anbieter, der überprüft, ob Sie die Datei zu einem bestimmten Zeitpunkt signiert haben. Der Zeitstempel von Verisign ist der Standard. Das letzte Beispiel in der Hilfe zu Set-AuthenticodeSignature zeigt, wie man es benutzt.

Lee Holmes [MSFT] Windows Powershell Entwicklung Microsoft Corporation

+0

Ja, da ist in Beispiel 3 der Parameter - TimeStampServer. Jetzt muss ich nur noch einen auswählen und herausfinden, ob ich ihn mit einer internen CA verwenden kann. Ich muss vielleicht tun, was Paul Alexander oben vorgeschlagen hat, und einen externen bekommen. Zumindest weiß ich, dass der Zeitstempeldienst mit meinem Zertifikat funktioniert. – Bratch

-1

Sie können wirklich schließlich nicht entkommen, die Code zum Rücktritt. Der Vorteil bei der Ausführung einer eigenen Zertifizierungsstelle besteht darin, dass Sie Ihre Code-Signing-Zertifikate mit einer längeren Lebensdauer als der Standardausführung ausstellen können, wodurch Sie länger warten können, bevor Sie etwas zurückgeben müssen. Der Nachteil ist natürlich mit einem anderen Service oder Server (Ihre CA) zu bewältigen.

Verwandte Themen