首页 > 解决方案 > 我可以自签名用户模式 ​​USB 驱动程序,还是需要通过 Microsoft 的硬件计划?

问题描述

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 的完整资格路线——这在几个方面既麻烦又令人望而却步。

鉴于它不需要内核模式,是否有更简单的方法来对我的驱动程序进行自签名?

(我不精通签名工具和代码签名,所以如果我遗漏了一些明显的东西,请不要犹豫告诉我!)


我收到的签名/验证失败的详细信息:

标签: windowscode-signingsigntool

解决方案


是的,尽管微软进行了更改,您仍可以签署您的用户模式驱动程序。

如果验证失败,则可能是签名使用了代码签名证书,并且由于SignTool 默认使用 Windows 驱动程序验证策略,您希望避免它并使用Default Authentication Verification Policy来验证您的文件。

因此,在您的verify命令中添加/pa选项以告诉它使用Default Authentication Verification Policy 而不是 ,Windows Driver Verification Policy意味着它将查看您的证书存储而不是 Microsoft 信任驱动程序的有限 CA 集。

signtool.exe verify /v /pa $MY_SIGNED_CAT_FILE

应该给你一个成功,例如:

Successfully verified: .\Sources\Driver\usbcom.cat
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

推荐阅读