【发布时间】:2021-09-10 14:47:33
【问题描述】:
Microsoft 已弃用对内核模式驱动程序的交叉签名根证书的支持:https://knowledge.digicert.com/alerts/Kernel-Mode.html
我偶尔会发布带有 USB 驱动程序的软件(作为一对 .inf 和 .cat 文件)。
到目前为止,我一直在使用 signtool 对它们进行签名,使用:
signtool.exe sign /a /ac $ROOT_CA_CERTIFICATE /tr $TIMESTAMP_SERVICE_URL /td SHA256 $MY_CAT_FILE
并通过以下方式验证:
signtool.exe verify /v /kp $MY_SIGNED_CAT_FILE
根据最近的弃用,这不再有效(详情如下)。 显而易见的替代方案似乎是将我的驱动程序视为内核模式,并通过 Microsoft 的完整资格认证途径——这在几个方面既麻烦又令人望而却步。
考虑到它不需要内核模式,是否有更简单的方法来对我的驱动程序进行自签名?
(我不精通 signtool 和代码签名,所以如果我遗漏了一些明显的东西,请随时告诉我!)
关于我收到的签名/验证失败的详细信息:
-
如果我继续使用
/ac $ROOT_CA_CERTIFICATE签名,我会收到以下错误,这似乎是由于交叉证书过期:Signtool Error: The provided cross certificate would not be present in the certificate chain. -
如果我忽略它,我可以成功签名,但使用
/kp验证失败:SignTool Error: Signing Cert does not chain to a Microsoft Root Cert.
而使用/kp参数,我得到了这个失败:SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
【问题讨论】:
标签: windows code-signing signtool