获取Microsoft签名的MSP430 USB驱动程序


11

我正在开发一种利用MSP430微控制器和内置USB模块的产品。我从德州仪器(TI)获得了PID,并使用其工具生成描述符,并使用.inf文件安装了驱动程序软件。明显的问题是,由于这些文件的自定义性质,在插入USB电缆时会出现弹出窗口(在Windows 7上),警告用户未签名驱动程序。我相信在Windows 8和Windows 10上,它只是阻止了它,根本没有向用户表明这一点。

由于这是我公司计划发布的功能齐全的产品,因此我们需要获取可以提供给客户的驱动程序证书(我相信以.cat文件的形式吗?),以便他们可以安装设备。驱动软件没有问题。

我已经阅读了很多Microsoft文档(最引人注目的本文档),以期了解使驱动程序签名所需的条件,但是不幸的是,此刻在我头上。

这是我到目前为止所了解的:

  • 我需要将驱动程序(.inf文件?)提交给Microsoft授权的证书颁发机构(CA)。有很多这样的东西,所以我需要找到一个可以给驾驶员签名的东西。
  • 选择CA后,通常我需要为他们的服务支付年费(最常见的是1年,2年或3年)。即使服务过期,我在此期间生成的任何驱动程序也将被永久签名。如果要在服务到期后更换驱动程序或创建新驱动程序,则需要再购买1年,2年或3年的服务。
  • 支付费用后,CA将生成一个.cat文件,该文件是一个证书,确保我给他们的驱动程序不会更改。如果这样做,它将不再与.cat文件匹配,并且在安装过程中将出现错误

它是否正确?冒着听起来好像我正在寻求针对特定CA的建议的风险(我不介意,请注意),在哪里可以找到能够为我进行此认证的CA列表?更好的是他们的网站和/或不同服务持续时间的价格。这里有没有人有直接的经验来获得由CA签名的基于USB微控制器的产品的驱动程序,谁能够帮助我理解并完成整个过程?我已经发布到MSDN论坛,但是那里似乎已经死了-已经两天了,我的主题只有少数观点。


您的驱动程序是功能齐全的东西,需要在内核模式下执行代码,还是仅是一个inf文件?如果它只是一个inf文件,它将加载哪些内置驱动程序(.sys文件)?
杰克B

这是我失败的地方,我对PC的内部工作以及驱动程序的工作方式了解得不多。我的设备是围绕带有内置USB模块的MSP430设计的。该设备只是通过USB连接具有CDC接口,因此它所
要做的

现在就坐在设计板上,实际上是在开发板上,当我尝试使用.inf文件安装设备时,我从Windows 7中收到标准错误:davidegrayson.com/signing/img/win7_unverified_publisher.png。在进行测试的同时,我一直在使用MSP430Ware软件包中CDC示例之一提供的.inf和.cat文件,但是当我发布此产品时,我将无法再这样做。如果我没记错的话,它不会在内核模式下执行代码
DerStrom8 '18

1
简而言之:您可以使用普通的代码签名证书进行签名,我上次查看的价格约为80英镑/年。不需要所有Microsoft交叉签名内容。但是在Windows 8.1和更早的版本上,它不是超级可靠的(我们无法通过EN61326来获得),因此您可能还需要一个替代方案。如果没人能击败我,我晚饭后会写一个答案。
杰克B

1
@AdamLawrence几个小时后我回来了,没有看到我需要在您的答案中添加任何内容。我很好。
杰克B

Answers:


16

其实还不错。我已经在工作中做过几次,为基于Microchip PIC24FJ64GB002的USB CDC-ACM-I 2 C接口编写和签名.INF / .CAT 。

  • 与证书颁发机构建立关系。您将需要向他们提供一些将被验证的基本信息。如果您申请扩展验证(EV),他们会要求更多,但是您不需要走那么远。Thawte,Digicert和Comodo是CA的一些示例。

  • 从CA购买Authenticode代码签名证书。这就是对与.INF文件关联的.CAT文件进行签名所需要的。对于这种级别的签名,您不需要内核模式证书。

  • 安装证书(不用说)

  • 下载Windows SDK框架Windows驱动程序工具包以获取所需的Microsoft工具(目录生成和签名)。

  • 打包并签名驱动程序:

    • 使用inf2cat为.INF文件生成目录(.CAT)文件
    • 使用signtool对目录文件进行签名

至此,您可以制作某种驱动程序安装程序,或使用SDK中的dpinst进行基本的安装自动化。

编辑:以下各种注释的注释:

  1. 创建用于加载USBSER.SYS的.INF文件不会创建内核模式驱动程序-您正在使用USBSER.SYS(内置,已签名和受信任),不会创建新内容-因此不需要EV签名证书和WHQL认证。只需一个基本的Authenticode证书。
  2. 从Windows 10开始,USBSER.SYS设备完全不需要签名的.INF,因为Windows会自动神奇地拾取USB CDC-ACM设备(Class_02)。他们还从头开始重写了驱动程序,并且现在效果更好(它甚至可以处理意外的设备移除和重新插入操作,而无需锁定虚拟COM端口,这是一个巨大的优势!)。也就是说,如果您确实愿意,您仍然可以使用签名驱动程序方法-签名驱动程序仍将“正常工作”。仍然有许多Win 8.1 / 8/7和较旧的计算机,因此对于USB CDC-ACM设备来说,具有签名的驱动程序仍然很重要。

进一步扩展您的问题:

  • 您无需提交任何要签署给CA的内容-您购买了代码签署证书,将其安装在计算机上,然后进行.INF验证并亲自签署。
  • 你并不需要支付年费本身 -然而,你买的证书将有一张1,2年或3年的有效期。证书到期后,您将需要购买新证书才能继续签名-以前签名的任何内容都将保持有效,但是您将失去签名新内容的能力。
  • .CAT是.INF的哈希值-对.INF的任何更改都将被检测到,并且证书将不再有效,这意味着.INF的行为类似于未签名的证书。

4
更多详细信息:Adafruit的“ 如何签名Windows驱动程序和可执行文件”
CL。

4
这是一个很好的答案,确实非常有帮助。您肯定使它听起来比我预期的容易得多。我将对此进行调查。同时,由于提供了清晰,直接的步骤,我将接受此答案。干杯!
DerStrom8

2
@ poizan42这不是内核模式的驱动程序。这是一个简单的USB CDC设备,仅打开一个虚拟COM端口。不执行内核模式代码执行。
DerStrom8

1
只是想跟进。这些步骤仅需一个警告即可完美工作:Windows SDK不附带inf2cat.exe,您还必须安装Windows驱动程序工具包(WDK):docs.microsoft.com/zh-cn/windows-hardware/drivers/ ……。非常感谢您的帮助,我现在可以在没有任何警告的情况下安装驱动程序软件-它像预期的那样显示我的公司为发行商
DerStrom8

2
答案已修正。感谢您指出明显的问题(距离我安装工具链已有几年了)
Adam Lawrence
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.