驱动程序/代码签名

Posted

技术标签:

【中文标题】驱动程序/代码签名【英文标题】:Driver/Code signing 【发布时间】:2012-07-01 06:50:35 【问题描述】:

说实话,我自己也不知道把它放在哪里,但我把它放在这里是因为签名过程需要 VS 的 signtool。关于签名和数字证书,我在这里有点困惑。

如果我错了,请纠正我。

1) 有两种类型的签名:代码签名和驱动程序签名。驱动程序必须做后者,而最终用户软件只需要做代码签名。

2) 驱动程序签名需要来自 VeriSign、GlobalSign 等来源的数字证书。而对于代码签名,我们可以使用自己生成的公钥生成自己的证书。

我理解正确吗?

【问题讨论】:

【参考方案1】:

前段时间我学习了使用内核模式代码签名演练http://msdn.microsoft.com/en-us/library/windows/hardware/gg487328.aspx(可作为 doc 文件下载)的驱动程序签名。我从未听说过内核模式驱动程序的代码签名。对于驱动程序,有两种签名类型:测试签名和发布签名。测试签名用于开发过程,Win7和Vista 64位只允许在特殊模式下测试签名驱动程序。 Release-sign 用于产品发布,需要购买数字证书。发布签名的驱动程序可以不受限制地安装在任何 Windows 版本中。

内核模式代码签名演练包含内核模式驱动程序的测试和发布签名的分步说明。

【讨论】:

嗯.. 这个怎么样? en.wikipedia.org/wiki/Code_signing 它从未提及内核模式驱动程序。我认为代码签名用于桌面应用程序的时间和用途? 在我的回答中,我只谈论驱动程序签名。 64 位 Windows(从 Vista 开始)不允许未签名的驱动程序。我不知道其他软件产品的签名,但作为用户,我看到许多下载的程序(例如 ActiveX 控件)都已签名。 我在这里面临的问题是我公司的人正在使用 FTDI 驱动程序,该驱动程序已经由 Microsoft 签名。我们编辑了模板 .inf 文件以适应我们的硬件,有人说我们需要对安装文件进行签名。 (这成了一个问题,因为他现在离开了公司,没有其他人知道签名过程)我需要在安装文件上进行驱动程序签名吗?还是只是代码签名?这是我最关心的问题.. @user1491884 您确实需要签署 .inf 文件。驱动程序签名过程为 .sys(二进制)和 .inf 文件创建一个签名。然后在驱动程序安装期间,如果任何文件被更改,签名验证将失败。 我明白了。我想我需要对 .inf 文件进行代码签名? (实际上我对所有使用的术语不太清楚......对不起!)我如何签署 .inf 文件?我需要 CA 的数字证书吗?或者我可以生成我的密钥并将其签入该 .inf 文件?请记住,驱动程序将由我们的最终用户使用。【参考方案2】:

有两种类型的签名:代码签名和驱动程序签名。 驱动程序必须做后者,而最终用户软件只需要做 代码签名。

这两种类型是:代码签名和 EV 代码签名。驱动程序需要稍后加上额外的验证和批准,但仅限于适用于 Windows 10 的驱动程序。

驱动程序签名需要来自以下来源的数字证书 威瑞信、环球信。而对于代码签名,我们可以生成自己的 使用我们自己生成的公钥的证书。

EV 签名(用于驱动程序)来自同一家公司,但它们包含每个签名所需的硬件令牌,

适用于 Windows 10 的驱动程序需要以下内容:

    EV (Extended Validation) code 签名,requires a hardware token 比普通的代码签名证书花费更多。

    Submission to Microsoft 是他们签名的计数器代码。为此,签名者(必须 register 使用 Microsoft 硬件程序)。 此要求自 2016 年 1 月起生效。

有一个很棒的tutorial关于这个过程。

【讨论】:

以上是关于驱动程序/代码签名的主要内容,如果未能解决你的问题,请参考以下文章

应用程序代码签名失败并出现错误“代码对象根本没有签名”

此代码签名证书对签名小程序有效吗?

代码签名错误:SDK“iOS 11.4”中的产品类型“应用程序”需要代码签名

iPhone 应用程序代码签名错误 - “...签名无效...”

Thawte 企业版代码签名证书

代码签名错误:SDK“iOS 11.0”中的产品类型“应用程序”需要代码签名