13

我正在阅读代码签名证书过期时会发生什么 - 堆栈溢出并想知道一个更可靠的答案。提供的答案更多是关于设置您自己的 CA。即使使用您自己的 CA,您仍然需要处理过期的代码证书。

如果您在未使用时间戳服务的情况下对代码进行了签名,则在证书过期后,您的代码将不再受信任,并且根据安全设置,它可能无法运行。您需要每 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 等)、颁发者、之前/之后日期和指纹。您还会收到一条指示签名状态的消息。

4

3 回答 3

10

您最好选择一个受信任的证书提供商(Verisign、Thawte、Comodo 等)。这允许您在用户不明确信任您的私有根 CA 的情况下签署您的软件。我们使用了 Verisign 和 Thawte,Comodo 甚至 GoDaddy 都带有时间戳,即使在证书过期数年后,软件也不会失效。

于 2009-05-26T22:00:51.600 回答
9

时间戳是一项免费服务——它实际上只是一个受信任的提供商,用于验证您是否在给定时间签署了文件。Verisign 的时间戳服务是标准服务。Set-AuthenticodeSignature 帮助中的最后一个示例演示了如何使用它。

Lee Holmes [MSFT] Windows PowerShell 开发 Microsoft Corporation

于 2009-05-27T22:03:57.463 回答
-1

你无法真正逃避最终不得不辞职的代码。运行您自己的 CA 的优势在于,您可以选择以比默认更长的生命周期颁发代码签名证书,从而允许您等待更长的时间,然后才不得不辞职。缺点当然是要处理另一个服务或服务器(您的 CA)。

于 2013-04-30T16:51:41.547 回答