【问题标题】:PowerShell Set-AuthenticodeSignature - IncludeChain Options Advantages/Disadvantages?PowerShell Set-AuthenticodeSignature - IncludeChain 选项的优点/缺点?
【发布时间】:2016-07-12 03:59:40
【问题描述】:

使用Set-AuthenticodeSignature 时,有一个名为IncludeChain 的选项。虽然有关于每个选项是什么的文档,但我无法发现围绕每个设置的优点/缺点的太多指导(当你选择一个设置而不是另一个设置时)。

我在示例中看到IncludeChain 的任何地方,它总是设置为All。我认为All 可能是最好的答案,但我想了解每种设置的优缺点。

  • Signer
  • NotRoot(默认)
  • All

除了All让文件有点大,每个设置的具体优缺点是什么?

参考文献

示例

$certPfx = "super secret location"
$certPassword = "super secret password"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certPfx, $certPassword)

Set-AuthenticodeSignature -Filepath "ps1 file location" `
  -Cert $cert `
  -TimeStampServer "url to timestamp server" `
  -IncludeChain All `
  -HashAlgorithm SHA256

【问题讨论】:

    标签: powershell authenticode


    【解决方案1】:

    默认NotRoot 是最好的选择。

    • 签名者

    优点:只放签名者证书时,签名大小相对较小。

    缺点:如果接收者没有构建链的所有信息,有效的签名可能会失效。此外,从 Internet 检索证书会导致签名验证期间出现明显延迟。

    • 非根

    优点:通过使用附加的中间 CA 证书加速链构建,减少签名验证时间。在没有关于链证书的额外信息可用的情况下(例如,通过本地商店或 AIA 扩展),这些证书填补了空白,极大地帮助了链的构建。

    缺点:每个中间 CA 证书的签名大小增加约 2kb。

    • 全部

    优点:通过使用附加的中间 CA 证书加速链构建来减少签名验证时间。

    缺点:每个 CA 证书的签名大小增加约 2kb。此选项包括根 CA,它是冗余信息。如果客户端已经拥有受信任的根证书(因此它已经安装),则包含的根 CA 证书不会提供任何有用的信息。如果客户端没有根证书,则将其包含在签名中也没有意义。

    【讨论】:

    • 同意。我想重申一下,我在“全部”中看不到任何价值——客户要么会信任你的 root(并且已经拥有它),要么在任何情况下都不应该将你的 root 添加到他们受信任的存储中,即使如果他们决定他们必须信任 您的证书,尽管不知道根目录。
    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    相关资源
    最近更新 更多