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.
+1: Allgemeine Idee: Verwenden Sie einen global vertrauenswürdigen Anbieter. –
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
@Bratch: Ja, Sie müssen ihren Zeitstempelserver verwenden. Wir haben nie ohne sie veröffentlicht, daher kann ich keine nicht zeitgestempelten Anwendungen kommentieren. –