1

我正在尝试在我们的公司工作站上预装一些用于医疗设备的 USB 驱动程序。不幸的是,这些驱动程序没有签名。基于在这里和其他地方所做的一些研究,我使用我创建的证书对这些驱动程序进行了自签名:

makecert -r -pe -n "CN=Self Root CA" -b 01/01/2006 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.6 -sv selfcert.pvk selfcert.cer

我将证书添加到“受信任的根 CA”和“受信任的发布者 CA”,并签署了驱动程序:

signtool sign /f selfcert.pfx /p password /uw /t http://timestamp.verisign.com/scripts/timstamp.dll /v C:\gendex\fusiondexis.cat

我添加了“/uw”参数,因为证书中存在“Windows 系统组件验证”(1.3.6.1.4.1.311.10.3.6)和“代码签名”(1.3.6.1.5.5.7.3.3),因此这似乎是合适的。

然后我用signtool验证了签名:

signtool.exe verify /pa /v /c C:\gendex\fusiondexis.cat C:\gendex\fusiondexis.inf

驱动程序文件被复制到“C:\gendex”,我更新了注册表项“DevicePath”以在搜索驱动程序文件时包含此路径。但是,当我插入设备时,Windows 会显示添加新硬件向导,这需要管理员输入他们的凭据。如果我不这样做,设备将保持在无法识别的状态,如果我这样做 - 它工作正常。

我整天都在努力解决这个问题。任何帮助,将不胜感激!谢谢。

4

1 回答 1

1

确保将selfcert.cer(自根 CA)添加到本地机器存储,而不是用户特定存储。您可以使用

CertMgr.exe -add -c selfcert.cer -s -r localMachine AuthRoot

大约 8 年前,我为我的一位客户开发了该解决方案,但它仍然有效。我当时使用的是没有 /uw 开关的旧版 SignTool。我刚用

SignTool.exe signwizard /v LXT52Xxp.cat

对于故障排除,我建议您设置详细的 SetupAPI 日志(请参阅此处此处)。它将显示是否将从哪个目录获取哪些驱动器以及驱动程序的排名是否将解释为与“Microsoft signed”相同。

于 2013-05-17T15:10:33.737 回答