使用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
答案 0 :(得分:3)
默认NotRoot
是最佳选择。
缺点:如果收件人没有构建链的所有信息,则有效签名可能变为无效。此外,从互联网上检索证书会在签名验证过程中造成明显的延迟。
专业人员:通过附加中间CA证书加快链构建,缩短签名验证时间。如果没有关于链证书的额外信息(例如,通过本地商店或AIA扩展),这些证书填补了这一空白,对链建设有很大帮助。
缺点:每个中间CA证书的签名大小增加约2kb。
专业人员:通过附加中间CA证书加快链构建,缩短签名验证时间。
缺点:每个CA证书的签名大小增加约2kb。此选项包括根CA,它是冗余信息。如果客户端已经拥有受信任的根证书(因此它已经安装),则包含的根CA证书不提供任何有用的信息。如果客户端没有根证书,那么它在签名中的包含也没有意义。