如何签署我的驱动程序以使其安装在 Windows 7 64 位上?

Posted

技术标签:

【中文标题】如何签署我的驱动程序以使其安装在 Windows 7 64 位上?【英文标题】:How to sign my driver so it will install on Windows 7 64-bit? 【发布时间】:2011-11-02 18:19:03 【问题描述】:

我有一个内核模式驱动程序,我必须在 64 位 Windows 7 上安装它。它需要进行数字签名。我使用dseo13b.exe 对其进行了数字签名。但是当我加载驱动程序时,我在系统事件日志中收到一条错误消息:

由于以下错误,驱动程序无法启动: Windows 无法验证此文件的数字签名。最近的硬件或软件更改可能安装了签名错误或损坏的文件,或者可能是来自未知来源的恶意软件。

我不想使用测试签名模式。我该如何解决这个问题?我需要从 Microsoft 获得证书吗?

我已经开发了驱动程序,现在可以在 64 位机器上运行...

【问题讨论】:

我不同意,我认为这是主题。我认为这基本上是一个关于构建工具的问题。 我认为这对于驱动程序开发人员来说确实是一个相关的问题——它是关于开发环境的。这与有关“制造”的问题有何不同?因此重新开始投票。 【参考方案1】:

仅适用于 64 位版本:设置自签名

第 1 部分:创建和安装测试证书

    启动提升的命令行 shell(Vista 及更高版本)。 makecert.exe -r -pe -ss my -n "CN=MyTestCertificate" mytestcert.cer certmgr.exe -add mytestcert.cer -s -r localMachine root 启动 certmgr.exe 并检查“MyTestCertificate”是否列在“个人”和“受信任的根证书颁发机构”下。 将 mytestcert.cer 文件保存在安全的地方。

第 2 部分:配置系统以运行测试签名代码(Vista 及更高版本)

    启动提升的命令行 shell(Vista 及更高版本)。 在提升的 cmd.exe 提示符下运行 Bcdedit.exe -set TESTSIGNING ON。 certmgr.exe -add mytestcert.cer -s -r localMachine root certmgr.exe -add mytestcert.cer -s -r localMachinetrustedpublisher 重启。 Vista:“测试模式”将出现在桌面的所有四个角落,“Microsoft (R) Windows (R) (Build 6000)”将出现在顶部。 Windows 7:右下角会出现“Test ModeWindows 7Build 7600”。

【讨论】:

【参考方案2】:

签署驱动程序的两个有用资源

Windows 7

Windows Server 2012 and Windows 8.1(kind of)

夏天:

1.从(Digicert 或 Verisign 或您预算范围内的任何地方)获取 RSA 证书,或者如果您只需要将其安装在您的计算机中,请自行创建证书

2.当你有证书时,你也会有一个私钥

3.要分发驱动程序,您需要此证书是可追踪的,Microsoft 使用称为受信任根证书颁发机构的系统。现在除了这些颁发证书之外,还有其他颁发证书的机构,但他们需要 Windows 更新来验证这些证书。键入 certmgr.msc 以获取列表。并寻找具有代码签名权限的那些

4.在该列表中添加证书或从该列表中获取证书

5.用证书签署驱动程序[详情在上面的链接]

6.现在分发驱动

互联网上有很多关于签署驱动程序的教程。 注意:WHQL 是一个昂贵的选择,如果您的公司能够支付费用,您可以考虑

【讨论】:

可能很重要:根据此链接:community.silabs.com/t5/Interface-Knowledge-Base/… 和赛门铁克技术支持,您需要使用 SHA1 对 .sys 文件进行签名,然后构建 .cat 文件 不开启测试签名真的可以吗?【参考方案3】:

您只需要一个受信任的证书(由Verisign、Thawte 等签名)。

浏览这些资源:

Driver Signing Requirements for Windows (MSDN) Kernel-Mode Code Signing Walkthrough (MSDN)

【讨论】:

谢谢.. 你的意思是说 Versign 会用受信任的证书签署我的驱动程序文件,然后我就可以使用了吗? 您需要从威瑞信等受信任的来源获取证书。威瑞信相当昂贵,但还有其他更便宜的地方可以获得证书。 我的公司可能会购买证书,但是我获得证书后该怎么办.. 如何将驱动程序文件与我获得的证书链接?以及我如何将从互联网下载的交叉证书与我从威瑞信获得的证书链接?我阅读了文档 KMSC_WalkThru (How to Release-Sign a Kernel Module),但这些内容并不清楚。你能帮忙吗.. 我如何获得以下内容:mySPCfile.spc 您的公钥证书文件。 myPVKfile.pvk 您的私钥证书文件。 myPVKpassword 私钥证书文件的密码。在msdn.microsoft.com/en-us/windows/hardware/gg487543 中提到...请帮助 myCrossCert.cer 为您的 SPC 提供正确的交叉证书文件。 CN 值 SPC 的 CN 值(在个人证书存储中)。

以上是关于如何签署我的驱动程序以使其安装在 Windows 7 64 位上?的主要内容,如果未能解决你的问题,请参考以下文章

如何签署我的司机?有必要吗?

如何打包 python 应用程序以使其可 pip 安装?

从 Play 商店更新我的应用程序后,如何在 Android 上保存 QSettings 文件的内容以使其可读?

如何调整我的vb6程序以使其自动适合任何屏幕分辨率?

实际上,如何设置 Amazon AWS 以使其自动扩展?

如何从外部 api 读取属性并将其设置为 springboot 中的应用程序上下文以使其全局可用?