powershell - 如何防止每 1 年或 2 年需要重新签署我的代码?

标签 powershell certificate code-signing trusted-timestamp

我正在阅读 What happens when a code signing certificate expires - Stack Overflow并想知道一个更可靠的答案。提供的答案更多是关于设置您自己的 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 等)、颁发者、之前/之后日期和指纹。您还会收到一条指示签名状态的消息。

最佳答案

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

关于powershell - 如何防止每 1 年或 2 年需要重新签署我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912955/

相关文章:

c# - 如何转义 PowerShell 提供程序返回的路径名

powershell - 以表格格式将 Azure 自动化输出发送到应用程序洞察

javascript - 重复输出到控制台 - 我必须在哪里插入我的回调?

java - 将 x509Certificate 转换为 byte[] 并反转

python - 无法使用 Python 中的 Requests 模块复制代码以获取证书

ios - 如何知道我的应用程序正在使用哪个分发/开发配置文件

powershell - 我可以使用系统帐户调用Invoke-RestMethod吗?

winapi - 如何在 CertCreate 自签名证书函数中指定 key 大小

ios - 无法使用 xcodebuild 构建项目,但可以使用 Xcode.app

ios - 供应配置文件不包括应用程序标识符和钥匙串(keychain)访问组权利