我为销售USB设备,并提供驱动程序为他们的公司工作。
在Windows 7中,你可以安装和使用未签名的INF驱动程序文件的USB设备,只要他们没有任何的代码添加到内核。 我公司采用微软(提供通用驱动程序usbser.sys
和winusb.sys
),所以我们从来不需要签署我们的驱动程序包。
根据我们的客户之一,从另一个堆栈溢出问题的报告是什么在驱动程序签名要求更改为Windows 8? 和Arduino的论坛 ,这听起来像在Windows 8消费者预览版已经要求所有第三方INF文件得到签署严格的签名要求。 尝试安装在Windows 7的工作是驱动程序时,该错误消息的人越来越:
第三方INF不包含数字签名信息。
什么是微软,确认签名仍将在Windows 8的最终版本需要官方的词吗? 从MSDN.com一两句话就足够了,但我无法找到任何东西。
我正在考虑购买签名证书,但在此之前我付$ 200我要确保我真的需要它在长期内。 这有可能是新的签名要求仅仅是在消费者预览,而不是在真正的版本?
要回答我的问题:是的,Windows 8的最终版本确实需要将签署所有的INF文件,但你并不需要提交您的驱动的WHQL。 我写了这一要求,并在我的文章更实用的Windows代码和驱动程序签名 。
它不仅需要INF文件的签字,这也要求他们通过签署WHQL认证,不是说你使用嵌入式标志的.sys文件等的相同。 在INF文件中使用我的代码签名证书并没有在所有的工作。 (同样的问题如果不签名。)
编辑:
这是微软希望你去思考什么。 他们说,司机的某些类是经过WHQL签名,否则他们将无法正常工作,并验证码签署仅适用于那些没有WHQL处理谁。
事实证明,你可以验证码标志的驱动程序包,但你必须照顾和他们签名,就像您现在内核代码,这意味着获得你的正确的交叉证书CA (来自交叉证书的内核模式代码签名 ,有吨他们的现在,包括StartCom,我有(2级,美国60 $两年,但它们不能被加盖时间戳)。提供此交叉证书(不一样的CA的自签名证书,或他们的中介证书。这是唯一可用的MSDN页)以SignTool通过/ac
开关。
然后使用SignTool与验证/kp
开关,看看你过正常签了字。 SignTool验证有没有任何开关要求.cat文件是经过WHQL签名,而/pa
开关,这似乎之前是好的,现在是过于宽松,且仅适用于非驱动程序签名(如EXE文件, ClickOnce的 ,等)。
如果你不希望获得自己的内核级的签名证书(这是比较容易现在比以前,坦率地说,它仅限于VeriSign公司的超贵面前,GlobalSign的US $ 200一年的人,我想微软看到了不很多人写了x64系统的内核级漏洞),你可以做一个自签名的根CA,有你的驱动程序安装程序安装到LOCALMACHINE的“受信任的根证书颁发机构”存储(见certmgr.exe
),然后安装。这是由签署猫文件。 当然,由于这不是一个内核级代码证,你只能使用的.sys已经具备从嵌入式内核级代码证书文件别人(这意味着,你只能修改.inf文件的驱动程序包文件) 。 显然,有一些漏洞,允许自签名证书签名的.cat文件(如果你做你自己的CA,然后签署了一份证明书,然后用你的签署.cat文件,它不会像这样工作 )。
对于这是否为每个驱动程序INF包它使一套房,见libwdi,并在猫文件的自签名证书是如何允许在Windows 8上安装。
EDIT2:
删除CERTUM“开源”开发者证书提及,因为它不是交叉认证由微软(你得到一个不是Certum可信的网络之一,微软的交叉认证)。