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

电器工程 USB msp430 微软
2022-01-25 05:23:25

我正在开发一种使用带有内置 USB 模块的 MSP430 微控制器的产品。我从 Texas Instruments 获得了一个 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 论坛上发帖了,但那里似乎已经死了 - 已经两天了,我的帖子只有少数观点。

1个回答

实际上,这并没有那么糟糕。我在工作中已经这样做了几次,为基于 Microchip PIC24FJ64GB002 的 USB CDC-ACM-to-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. 创建一个 .INF 文件来加载 USBSER.SYS不是创建内核模式驱动程序 - 您正在使用 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 的行为就像未签名的一样。