驱动程序安装失败,因为交叉签名链不包含microsoft

时间:2011-08-31 14:37:02

标签: windows kernel driver code-signing

您知道为什么签名证书链中会遗漏“Microsoft Code Verification Root”吗?

我们最近在两个域之间移动了构建系统,并且必须重新安装证书。我们发现我们遇到了一个签名问题,其中Microsoft不在链中导致安装期间内核驱动程序拒绝。

我们注意到我们在certmgr中有2个额外的证书:Trusted Publisher:Certificates

  • 第3类公共初级认证..
  • Verisign Class 3代码签名......

在停用第3级公共主要认证后,“问题”消失了,我们与Microsoft建立了正确的签名链。

我不确定如何安装 Class 3公共主要认证或我们使用它并正在测试我们可能面临的影响。

有没有人遇到过这种问题,他们是如何处理的?有没有办法在命令行上禁用class-3,这样我就可以单独保留certmgr设置,从而降低风险?

感谢您的帮助

彼得

签署命令

signtool.exe sign /v /ac MSCV-VSClass3.cer /s TrustedPublisher /n "My Corp" /t http://timestamp.verisign.com/scripts/timstamp.dll mydriver.sys

签署验证     signtool verify / kp / v mydriver.sys

*** Signing Certificate Chain:
*** Issued to: Class 3 Public Primary Certification Authority
*** Issued by: Class 3 Public Primary Certification Authority
*** Expires:   8/2/2028 7:59:59 PM
*** SHA1 hash: xxxxxxxxxxxxxxxxxx

    Issued to: VeriSign Class 3 Code Signing 2009-2 CA
    Issued by: Class 3 Public Primary Certification Authority
    Expires:   5/20/2019 7:59:59 PM
    SHA1 hash: xxxxxxxxxxxxxxxxxx

        Issued to: My Corp
        Issued by: VeriSign Class 3 Code Signing 2009-2 CA
        Expires:   9/10/2013 8:59:59 PM
        SHA1 hash: xxxxxxxxxxxxxxxxxx

2 个答案:

答案 0 :(得分:4)

理论上,我可以从verisign安装与我的证书匹配的交叉签名证书到证书商店,signtool会自动使用它。但是,这可能导致错误的证书用于交叉签名。

明确是更好的

SignTool.exe sign /v /s trustedpublisher /ac path-to-retrieved-cert\MSCV-VSClass3.cer /n myCertName /t http://timestamp.verisign.com/scripts/timestamp.dll driver-file-to-sign

  • 验证

SignTool.exe verify /kp /v drive-file-to-check

或者如果您有目录文件

SignTool.exe verify /kp /v /c driver-cat-file.cat drive-sys-file.sys

答案 1 :(得分:0)

我们比较了两个构建系统,并且我们在错误系统上的certmgr受信任发布者列表中发现了另外的Class 3 Public Primary证书。这与我们链中的顶级产品相匹配。我们禁用了此发布,链的顶部已恢复为microsoft。

所以,我们仍有疑问,但这似乎解决了我们的问题,对其他版本没有任何不良影响。