【问题标题】:how to get older window 7 OS to install dual signed files如何让旧的 Windows 7 操作系统安装双签名文件
【发布时间】:2016-12-05 22:18:37
【问题描述】:

我们的双重签名软件未安装在较旧的 Windows 7 操作系统版本上。

安装错误是: Windows 无法验证此设备所需驱动程序的数字签名。最近的硬件或软件更改可能安装了签名不正确或损坏的文件,或者可能是来自未知来源的恶意软件。 (代码 52)

我们的代码签名证书最近更新为 SHA256。

我的研究发现,我必须对二进制文件进行双重签名,这样签名才能在不支持 SHA-256 的旧版 Windows 上验证。

感谢本网站的贡献者,我能够修改我们现有构建脚本的所有组件以成功实现双签名二进制文件。

它们确实安装在多个 Windows 10 操作系统版本和带有 SHA-256 证书安全更新的 Windows 7 中。 如果没有更新,它们不会安装在 Windows 7 操作系统中。

我们的构建机器是 32 位 Win 7,所以我使用 VS 2015 附带的 8.1 Windows 工具包中的 x86 版本 signtool.exe,它的版本是 6.3.9600.17298

我发现有关 Windows 7 的信息存在冲突,并且它能够安装双签名 CAT 文件。

所以我正在寻找一种方法来在所有版本的 Windows 7 和 10 上安装代码,而不管它们的 Windows 更新状态如何。 (一些客户不定期更新操作系统,而是更喜欢保持这种状态)

更新:我能够将我们的应用程序和驱动程序安装到较旧的 Windows 7 操作系统版本。结果发现代码签名证书没有正确设置以允许双重签名。

我必须将证书重新颁发为带有 SHA1 根的 SHA256 以进行代码签名。

【问题讨论】:

  • 您的更新是答案吗?如果是这样,您可以在下面提供它而不是对您的问题进行编辑

标签: code-signing


【解决方案1】:

在上周的测试设置成功后,我们正式构建了整个软件套件(包括 USB 设备驱动程序)。 我们在以下机器上测试了软件安装和运行:

32 位 Windows 7 Ultimate 版本 6.1.7601 Service Pack 1 Build 7601

64 位 Windows 7 专业版 6.1.7601 Service Pack 1 Build 7601 原始 ISO 版本,无操作系统更新

64 位 Windows 7 专业版 6.1.7601 Service Pack 1 Build 7601 操作系统更新,包括 KB3033929 以实现 SHA256 兼容性

64 位 Windows 7 Home Basic 版本 6.1.7601 Service Pack 1 Build 7601

64 位 Windows 10 专业版 10.0.10586 Build 10586

64 位 Windows 10 家庭版 1607(操作系统内部版本 14393.10)

64 位 Windows 10 Pro Insider Preview 版本 1607(操作系统内部版本 14971.1000)

所有这些测试都成功安装了应用和驱动程序。

因此,答案是更改安装在构建机器上的代码签名证书的类型。

证书必须安装为带有 SHA1 根的 SHA256。 CertMgr 显示 2 个单独的证书,一个具有 hash=SHA1,第二个具有 hash=SHA256。

然后修改构建脚本以创建双重签名。第一次调用 signtool 创建 SHA1 符号,第二次调用 signtool 附加 SHA2 符号。 (注意:只有 Windows SDK 8.1 及更高版本支持双重签名。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多