You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为修改设备名后的WIN10 x64驱动创建数字签名?

我来给你把这事掰扯明白哈——既然你修改了驱动里的设备名称后丢失了带签名的.cat文件,关于签名的解决方案,咱们分情况说:

一、可以为Windows创建专属数字签名,分两种场景
  • 测试/个人使用:自签名证书
    如果你只是自己测试或者在少量机器上用,完全可以生成自签名证书来给修改后的驱动签名,步骤如下:

    1. 用PowerShell生成自签名代码签名证书:
      New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=你的名称/组织" -KeyUsage DigitalSignature -FriendlyName "我的驱动签名证书"
      
    2. 把生成的证书导入到本地的「受信任的根证书颁发机构」和「受信任的发布者」存储中,否则Windows会默认拒绝信任。
    3. 用Windows SDK自带的inf2cat工具重新生成适配修改后INF的.cat文件(确保SDK已安装):
      inf2cat /driver:"C:\你的驱动文件夹路径" /os:10_x64
      
    4. signtool给新生成的.cat文件(以及相关驱动文件)签名:
      signtool sign /f "你的证书文件.pfx" /p "证书密码" /t http://timestamp.digicert.com "C:\你的驱动文件夹路径\生成的驱动.cat"
      
      注意:这种自签名驱动在64位Windows的正常模式下会被阻止安装,需要先开启测试模式:运行bcdedit /set testsigning on,重启机器后即可正常安装。
  • 正式/商用场景:商业代码签名证书
    如果要在多台机器或者正式生产环境使用,得从正规CA机构(比如DigiCert、GlobalSign)购买支持驱动签名的代码签名证书,优先选EV级别的证书——这种证书不需要开启测试模式,Windows会直接信任,流程和自签名类似,只是用购买的官方证书完成签名步骤即可。

二、无法适配原有厂商的驱动证书

很遗憾,你没法直接复用厂商原来的证书给修改后的驱动签名:数字签名的核心依赖私钥,厂商的私钥是严格保密的,你根本无法获取。而且原来的.cat文件是厂商对原始驱动文件的哈希值签名,你修改了INF里的设备名称后,文件内容发生变化,原签名完全失效,必须重新生成.cat并完成新的签名操作。

额外小贴士
  • 修改驱动INF时,除了设备名称,尽量不要改动硬件ID等关键字段,否则可能导致驱动无法匹配你的设备。
  • 务必使用Windows SDK里的官方工具(inf2catsigntool)处理签名,第三方工具容易出现兼容性问题。
  • 如果是企业内部使用,也可以搭建企业内部CA,生成内部通用的代码签名证书,让内部所有机器信任该CA后,就能正常安装修改后的驱动了。

内容的提问来源于stack exchange,提问作者JDSA WQAS

火山引擎 最新活动