我在读What happens when a code signing certificate expires - Stack Overflow,想知道更准确的答案。提供的答案更多的是关于建立自己的CA.即使拥有自己的CA,您仍然需要处理过期的代码证书。如何防止需要每隔1年或2年重新签署我的代码?
如果您在不使用时间戳服务的情况下对代码进行签名,则在证书过期后,您的代码将不再受信任,并且根据安全设置,它可能不被允许运行。您需要每隔1年或2年用新证书或更新证书重新签署所有代码。
可信(数字)时间戳允许数字签名在证书本身过期后仍然有效。只有在您做出更改后,您才需要使用新证书重新签署代码。
这一切听起来是否正确?如果是这样,我需要建议使用什么时间戳服务,最好是从实际使用时间戳服务的人那里获得。我也想知道是否有任何内部解决方案,类似于您自己的CA.
现在这适用于PowerShell脚本,但我最终会遇到与其他代码相同的问题。
更新:如何签订PS脚本时间戳样品(你可以为这个脚本):
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"
然后,看到签名者证书和戳器证书,你可以做这样的:
Get-AuthenticodeSignature MyFile.ps1 | fl *
它给你的主题(CN,OU等),发行人,前/后的日期,以及拇指指模您的证书和戳器的证书两种。您还会收到一条消息,指出签名的状态。
+1:总体思路:使用全球信任的提供商。 – 2009-05-26 22:12:52
随着Verisign和Thawte您是否也有时间戳?没有时间戳,有些系统不会抱怨证书过期,并且不运行你的代码? – Bratch 2009-05-26 22:42:39