Powershell 如何防止每隔1年或2年需要重新签署代码?

Powershell 如何防止每隔1年或2年需要重新签署代码?,powershell,certificate,code-signing,trusted-timestamp,Powershell,Certificate,Code Signing,Trusted Timestamp,我在阅读,想知道一个更确切的答案。提供的答案更多的是关于设置您自己的CA。即使使用您自己的CA,您仍然需要处理过期的代码证书 如果您在未使用时间戳服务的情况下签署代码,则证书过期后,您的代码将不再受信任,并且根据安全设置,可能不允许运行该代码。您需要每隔1或2年使用新证书或更新的证书重新签署所有代码 受信任(数字)时间戳允许数字签名在证书本身过期后仍然有效。仅当您进行了更改时,才需要使用新证书对代码重新签名 这些听起来都对吗?如果是这样,我需要关于使用什么时间戳服务的建议,最好是来自实际使用过时

我在阅读,想知道一个更确切的答案。提供的答案更多的是关于设置您自己的CA。即使使用您自己的CA,您仍然需要处理过期的代码证书

如果您在未使用时间戳服务的情况下签署代码,则证书过期后,您的代码将不再受信任,并且根据安全设置,可能不允许运行该代码。您需要每隔1或2年使用新证书或更新的证书重新签署所有代码

受信任(数字)时间戳允许数字签名在证书本身过期后仍然有效。仅当您进行了更改时,才需要使用新证书对代码重新签名

这些听起来都对吗?如果是这样,我需要关于使用什么时间戳服务的建议,最好是来自实际使用过时间戳服务的人。我还想知道是否有类似于您自己的CA的内部解决方案

现在这适用于PowerShell脚本,但我最终会在其他代码中遇到同样的问题

更新:如何使用时间戳对PS脚本进行签名的示例(您可以为此制作脚本):

然后,要查看签名者证书和时间戳证书,可以执行以下操作:

Get-AuthenticodeSignature MyFile.ps1 | fl *

它为您提供主题(CN、OU等)、颁发者、日期之前/之后以及证书和时间戳证书的指纹。您还会收到一条消息,指示签名的状态。

您最好选择一个受信任的证书提供商(Verisign、Thawte、Comodo等)。这允许您在用户不明确信任您的私有根CA的情况下对软件进行签名。我们使用了Verisign和Thawte,即使在证书过期数年后,软件也不会出现任何失效问题。时间戳是一项免费服务——它实际上只是一个可信任的提供商,验证您是否在给定时间签署了文件。Verisign的时间戳服务是标准服务。Set AuthenticodeSignature帮助中的最后一个示例演示了如何使用它

李·霍姆斯[MSFT] Windows PowerShell开发
微软公司

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

对于Verisign和Thawte,您是否也有时间戳?如果没有时间戳,一些系统不会抱怨证书过期,而不运行您的代码吗?@Bratch:是的,您必须使用他们的时间戳服务器。我们从来没有发布过没有时间戳的应用程序,所以我不能对非时间戳的应用程序发表评论。顺便说一句,Comodo是另一个预安装的、全球受信任的根提供商,并且有更便宜的证书。当然,如果这是为了公司工作,并且你有自己的广告基础设施,故事会有所改变,因为你可能已经需要管理自己的CA。另外请注意,如果你创建自己的CA,无论如何,你不必限定在1-2年的期限内。即使是在公司工作,我也投票支持使用一个可信任的提供者。他们已经有了管理证书存储的基础设施和知识,因此您不必担心。证书现在便宜多了,而且证书的成本将远低于有人管理证书的成本。是的,在示例3中,-TimeStampServer参数就是这样。现在,我需要做的就是选择一个,并找出我是否可以将其用于内部CA。我可能需要按照Paul Alexander的建议,获得一个外部CA。至少这样,我知道时间戳服务将与我的证书一起工作。
Get-AuthenticodeSignature MyFile.ps1 | fl *