我目前正在为 Windows 10 设备驱动程序签名而苦恼,我的公司已经为 Windows 10 x86 和 x64 开发了一些驱动程序,我尝试使用 SHA1 证书对其进行签名。我知道 SHA1 不是最好的选择,但就我所了解的 Microsoft 技术文档而言,它应该仍然有效。
实际问题是,驱动程序安装正确,即使我使用 signtool 的验证选项检查它们,它们似乎也没有问题。Windows 10 在安装 INF 文件时也表示它们安装正常。我已经对驱动程序包中的所有可签名文件进行了签名,包括 CAT 文件、DLL、SYS 文件等。
驱动程序实际上无法工作的地方是在 Windows 10 设备管理器中,在那里,我看到一个感叹号图标,以及以下描述:
“代码 52 - Windows 无法验证数字签名...”
我使用的工作流程完全相同,当然还包含其他实际数据,但其余部分是相同的。
"C:\Program Files (x86)\Windows Kits\10\bin\x86\stampinf.exe" -f "P:\MyDriver\mydriver.inf" -d 08/11/2017 -v 1.0.0.1
"C:\Program Files (x86)\Windows Kits\10\bin\x86\Inf2Cat.exe" /driver:"P:\MyDriver" /os:10_X86,10_X64,7_X86,7_X64,8_X86,8_X64,XP_X86,XP_X64
"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /f
"C:\Users\me\Documents\MyCert\MyCert.pfx" /p myVerySecretPassw0rd /d "My Drivers" /du "http://www.myveryverycompaniesurl.com" /t "http://timestamp.verisign.com/scripts/timestamp.dll" /v /ph "P:\MyDrivers\*.*"
这是“signtool verify”对通过这种方式创建的驱动程序文件的报告:
Verifying: P:\MyDrivers\OneOfMyDLLs.dll
Signature Index: 0 (Primary Signature)
Hash of file (sha1): *************************************************
Signing Certificate Chain:
Issued to: COMODO RSA Certification Authority
Issued by: COMODO RSA Certification Authority
Expires: Tue Jan 19 01:59:59 2038
SHA1 hash: *************************************************
Issued to: COMODO RSA Code Signing CA
Issued by: COMODO RSA Certification Authority
Expires: Tue May 09 01:59:59 2028
SHA1 hash: *************************************************
Issued to: My Company
Issued by: COMODO RSA Code Signing CA
Expires: Tue Sep 18 01:59:59 2018
SHA1 hash: *************************************************
所以对我来说,一切看起来都很好,直到设备管理器出现问题,其中一个签名存在一些问题,或者通常是文件的签名方式存在问题,但它实际上并没有提示我出了什么问题。编辑:如果微软认为 SHA-1 不够充分,为什么没有错误消息说明这一事实?
答案1
我知道 SHA1 不是最好的选择,但据我了解微软的技术文档,它仍然有效。
问题是 Windows 10 的当前版本不信任 SHA1 代码签名证书。如果您愿意,可以通过为证书添加整个证书链来覆盖此行为。
根据重要变更公告 - SHA-1 弃用直接从 Comodo,Windows 在 2016 年 1 月停止信任 SHA1 代码签名证书。
2016 年 1 月 1 日 - 包括 Internet Explorer 和 Chrome 在内的 Microsoft 产品将不再信任 SHA-1 代码签名证书
微软于 2017 年 5 月声明:
今天,我们打算采取更多措施警告消费者下载使用 SHA-1 证书签名的软件的风险。我们的目标是开发一种通用的操作系统级体验,所有应用程序都可以使用它来警告用户有关 SHA-1 等弱加密技术。长期来看,微软打算在所有 Windows 环境中不信任 SHA-1。微软正在密切关注有关 SHA-1 攻击可行性的最新研究,并将利用此来确定完整的弃用时间表。
中的一个答案到Windows 上弃用 SHA1 代码签名证书提供了下表。回答所讨论的对于使用 SHA1 证书有一些安全缓解措施。