签名INF驱动程序的工作原理它被签署,而不是别人的计算机上(Signed INF driver wo

2019-06-27 21:28发布

我公司购买了驱动程序签名证书从去爸爸。 我用它来签一个简单的INF文件是一些使用微软的usbser.sys我们的USB设备的驱动程序。 一切似乎都在Windows 7 64位计算机上工作,我签了:如果我在INF文件上右键单击,选择“安装”,然后第二个警告,我看这是有益的警告,显示正确的发布者名称:

但是,如果我去到不同的计算机(Windows Vista 64位),右键单击INF文件,然后选择“安装”,然后我得到这个错误消息,而不是:

这让我觉得,我的驱动程序没有正确签名,看起来很不错的唯一原因,我的电脑上是因为我在去爸爸的安装过程中安装一些根/中间/交叉证书。 我肯定希望我的用户能够看到,我们是经过验证的出版商,而无需在他们的计算机上手动安装证书。

INF文件,并在同一目录.cat文件。

有谁知道为什么发生这种情况,我该如何解决?

我怀疑的主要问题是,当我运行我得到这个错误signtool verify /v pololu.cat (更多详情如下),我也没有想通了为什么:

SignTool错误:证书链进行处理,但在其中不被信任提供商所信任的根证书终止。

我的程序的详细信息

驱动程序签名证书是从去爸爸一个新的产品,他们在几个星期前推出。 我不能完全确定它是如何从签名证书编号不同,但相同的价格。 我也跟着上的Go Daddy的网站上的说明下载并安装证书 ,虽然说明不完全匹配的现实。 我在步骤1中安装了Microsoft交叉证书后,我看到了一个红色警告消息,说:

在可以安装证书,则必须使用Windows Update更新您的根证书或手动下载并安装我们的资源库根证书。

我不知道该怎么做了一番。 我没有安装从他们的仓库一些GoDaddy的根证书,但它并没有明显的区别。

我安装了最新版本(8.0) 的Windows驱动程序工具包(WDK) ,然后安装最新版本(8.0) 为Windows 8的Windows软件开发工具包(SDK) 。 这使我获得了inf2catsigntool工具。 这两个试剂盒进行了最后的一个月内公布,因此有可能有可能是由于我们踩在一些新的错误。

在一个新的目录,我把三个文件:

  1. pololu_usb_to_serial.inf ,INF文件我要签名。 它很长,但简单; 你可以在这里阅读 。 这个INF文件是一个独立的驱动器; 没有其他文件都需要我们的驱动程序包。 这个文件基本上是一样的,我们的公司已经成功地分布(未签名)版本多年,但我不得不做出一些改变了Inf2Cat接受它。
  2. mscvr-cross-gdroot-g2.crt ,这是我从下载的Go Daddy证书库 。 我相信这是交叉证书是证明“去爸爸根证书颁发机构 - G2”是由微软可信的,但我不能完全确定这是否是使用权证书。
  3. sign_it.bat ,批处理文件我运行来进行数字签名。

该批处理文件只包含:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\inf2cat" /v /driver:%~dp0 /os:XP_X86,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation" /t http://tsa.starfieldtech.com pololu.cat

第一个命令调用inf2cat从Windows驱动程序工具包。 该/v选项使得冗长。 该/driver:%~dp0选项它指向包含批处理文件的目录; 一. 没有出于某种原因,这是不必硬编码的完整路径更好。 该/os选项指定所有的操作系统,我想用该驱动程序软件包支持。 此命令创建pololu.cat

第二个命令调用signtool从Windows软件开发工具包签署编录文件。 该/v选项使得冗长。 的/ac选项指定交叉证书使用(见上文#2)。 该/n选项指定使用(该证书是根据安装在我的计算机上的证书的名称certmgr.msc )。 该/t选项指定的Go Daddy的时间戳服务器的URL。

这里是当我运行该批处理文件中的命令提示符的输出:

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\inf2cat" /v /driver:C:\Users\david.POLOLU\Desktop\sign_it\ /os:XP_X86,Vis
ta_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (mscvr-cross-
gdroot-g2.crt)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (pololu_usb_t
o_serial.inf)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (sign_it.bat)

Parsing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished parsing INFs
Processing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished processing INFs
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...

Signability test complete.

Errors:
None

Warnings:
None

Catalog generation complete.
C:\Users\david.POLOLU\Desktop\sign_it\pololu.cat

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation"
 /t http://tsa.starfieldtech.com pololu.cat
The following certificate was selected:
    Issued to: Pololu Corporation
    Issued by: Go Daddy Secure Certificate Authority - G2
    Expires:   Sat Aug 31 11:35:25 2013
    SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

Cross certificate chain (using machine store):
    Issued to: Microsoft Code Verification Root
    Issued by: Microsoft Code Verification Root
    Expires:   Sat Nov 01 06:54:03 2025
    SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3

        Issued to: Go Daddy Root Certificate Authority - G2
        Issued by: Microsoft Code Verification Root
        Expires:   Thu Apr 15 13:07:40 2021
        SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

            Issued to: Go Daddy Secure Certificate Authority - G2
            Issued by: Go Daddy Root Certificate Authority - G2
            Expires:   Sat May 03 00:00:00 2031
            SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

                Issued to: Pololu Corporation
                Issued by: Go Daddy Secure Certificate Authority - G2
                Expires:   Sat Aug 31 11:35:25 2013
                SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

Done Adding Additional Store
Successfully signed: pololu.cat

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

正如我所说的,我保持的.cat和.inf在同一目录文件一起,但他们只被我签了字在电脑上正常工作。

验证与Signtool

signtool从微软工具也有一个“检查”功能,让你验证,如果你的签名是正确的。 有验证时,您可以使用三种不同的政策,以及它们各自有不同的结果:

  • Windows驱动程序验证策略说我的签名链不追溯微软和打印有关我的根是如何不受信任的错误消息。 这似乎是一个问题给我。
  • 默认验证码验证策略/pa )也说我的签名链不追溯微软,但它并没有给出一个错误。
  • 内核模式驱动程序签名策略/kp ,这可能是不适用的,因为我不签署内核模式驱动程序)说我的签名链不追溯微软,并给出任何错误。

有谁知道哪个策略用于Windows的INF文件? 这将至少可以帮我缩小问题。

这里是满的,从输出的详细signtool verify

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: A certificate chain processed, but terminated in a root
        certificate which is not trusted by the trust provider.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /pa pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26


Successfully verified: pololu.cat

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /kp pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

Cross Certificate Chain:
    Issued to: Microsoft Code Verification Root
    Issued by: Microsoft Code Verification Root
    Expires:   Sat Nov 01 06:54:03 2025
    SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3

        Issued to: Go Daddy Root Certificate Authority - G2
        Issued by: Microsoft Code Verification Root
        Expires:   Thu Apr 15 13:07:40 2021
        SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

            Issued to: Go Daddy Secure Certificate Authority - G2
            Issued by: Go Daddy Root Certificate Authority - G2
            Expires:   Sat May 03 00:00:00 2031
            SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

                Issued to: Pololu Corporation
                Issued by: Go Daddy Secure Certificate Authority - G2
                Expires:   Sat Aug 31 11:35:25 2013
                SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0


Successfully verified: pololu.cat

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

输出看起来都一样时,我签订的驱动程序(在那里工作)的计算机上运行,​​并在其他计算机上(如果它不工作)。

在计算器上类似的问题

对于64位Windows Thawte的驱动程序签名 -解决这个家伙的问题是一个CatalogFile指令添加到INF文件,但我已经有了。 ( CatalogFile=pololu.cat )。

编辑#1:签名可执行作品

我用signtool那些相同的选项签署一个可执行文件(NSIS安装),它工作正常的第一次尝试,在两台计算机上。 所以我认为这是为INF驱动程序文件讲讲签名策略不同,这就是被拧我。

编辑#2:警告在GoDaddy的证书

如果我双击mscvr-cross-gdroot-g2.crt ,在常规选项卡它说:“Windows没有足够的信息来验证这个证书。” 在证书路径选项卡,在“证书状态”,它说:“这个证书的颁发者无法找到。” 我还看到那些相同的警告,如果我双击gd_ms_drv_sign_bundle.p7b (从GoDaddy的证书捆绑),并打通第一个证书。

这两个证书的颁发者应该是微软代码验证根。 我应该担心的警告消息?

编辑#3:删除GoDaddy的证书

林赛从GoDaddy的高级支持团队回来给我。 她挂此页到从GlobalSign这也解释了你怎么也得从CA卸载根和中间证书可以注册的驱动程序在计算机上。 林赛说,如果你不做到这一步,签名工具将假定这些证书是目前在其他计算机上,因此不包括在他们的签名。

有谁知道如何检查什么证书“进口”到签名? 我可以使用哪些工具来看看Lindsay和GlobalSign的是正确的?

顺便说一句,我们必须围绕Windows XP的电脑,但微软很快将停止支持该操作系统。 尽管什么GlobalSign的说,有一定是一种方法,使在Windows 7这项工作。

根据林赛的建议,我也跟着从微软的说明关闭自动根证书更新 ,然后我用的UI certmgr.msc来删除“受信任的根证书颁发机构”和“中级证书颁发机构”的所有GoDaddy的证书。 然后我重新签我的inf文件。

不幸的是,没有工作! 签约后,我仔细检查了所有的GoDaddy的证书还是删除。

我已经收到的输出从没有GoDaddy的反馈signtool verify ,或在其驱动程序签名策略做验证时,我应该检查所有输入。 我希望他们能够只看验证输出,并告诉我,我做错了,或者告诉我会是什么样正确的输出等。

为了完整起见,这里有来自三个输出signtool verify之后我删除这些证书并重新签署了驱动程序:

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: A certificate chain processed, but terminated in a root
        certificate which is not trusted by the trust provider.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /pa pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /kp pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

编辑#4:DefaultInstall部分是一个禁忌

在该DefaultInstall部分的文档从微软,我发现了这一点:

注意驱动程序包的INF文件不能包含一个INF DefaultInstall部分,如果驱动程序包进行数字签名。

没有人知道为什么会是真的吗? 我找不到一个解释。

无论如何,我拿出我的INF文件的DefaultInstall部分,所以从现在开始我必须通过运行一个小DLL我写的,调用测试它SetupCopyOemInf 。

仍然没有运气; 我不断获得Windows Vista计算机上未经验证的发布者警告。

编辑#5:JLINK驱动程序是否正确签署

我是用C闲逛:\ WINDOWS \ SYSTEM32 \ DriverStore \ FileRepository文件,试图找到一些正确签名的驱动程序包。 第一个有趣的一个,我发现是JLinkCDC.cat/JLinkCDC.inf。 INF文件的版本是DriverVer=01/25/2012,6.0.2600.4 。 在Windows Vista的机器,如果我叫SetupCopyOemInf的INF文件(用我的DLL),然后我得到一个正确的消息告诉我的发布者是谁(套件含有Segger GMBH或类似的东西)。 因此,可以适当地签署驱动程序包像我这样的,但不知何故,GoDaddy或我做错了什么。

该JLinkCDC.inf驱动程序是非常相似,我的司机,因为它只是一个文件,并使用usbser.sys。 他们的签名的信任链追溯到威瑞信3级公用主证书颁发机构 - G5。

基本上,这JLinkCDC驱动程序是类似地雷和它的作品,所以我打算仔细看它看到的差别是什么。

该signtool验证JLinkCDC.cat的输出看起来非常相似,我的除了它追溯了威瑞信,而不是GoDaddy的。

编辑#6:小的改动

为了让我的司机更像JLinkCDC.inf,我加DriverPackageType=PlugAndPlay的INF文件,我缩短了文件名:现在的文件被称为polser.cat和polser.inf。 仍然没有运气!

编辑#7:一些成功!

我想下面的东西都是真实的; 请纠正我,如果我错了:

  • 对于驱动程序包(.cat文件,),为正确选项signtool verify/pa 。 我推断这从KMCS_Walkthrough.doc 。
  • 对于驱动程序包时,Windows只考虑是否信任链追溯到在certmgr.msc“受信任的根证书颁发机构”文件夹中的待验证证书发布者。
  • 对于驱动程序包,你可以用一个交叉证书(扩大从gdroot-g2.crt到Microsoft代码验证根信任链)签署,但Windows似乎忽略。 这是因为Microsoft代码验证根不是“受信任的根证书颁发机构”。
  • 还有为当前用户和证书本地计算机证书存储。 他们两人的关系,所以你应该使用MMC证书管理单元查看两个。 Certmgr.msc只显示当前用户的人。
  • 窗户应无缝地添加需要的时候,从Windows Update下载它(gdroot-g2.crt)到“受信任的根证书颁发机构”文件夹中,但它没有-的“G2的Go Daddy根证书颁发机构”。 这里更多的信息。

我使用的测试机上的Windows事件查看器中看到了什么事。 它看起来像Windows将取“的Go Daddy根证书颁发机构 - G2”它显示不良未经证实的发布者警告对话框会自动的,只是需要。 一旦用户关闭该对话框,该证书是从Windows Update获取,所以在安装时一次尝试应该会成功。 有趣的是,它会自动下载一个星空证书(这是在信任链为我戳根)及时。

我已经得到我的签名通过gdroot-g2.crt双击并导入它之前,我尝试安装驱动程序在Windows 7和Windows Vista计算机的工作。 我会看看这个过程可以实现自动化并添加到安装程序。

我发现了一个驱动程序包从另一家公司(JLinkCDC.cat)而与VeriSign证书签名的,植根于“威瑞信3级公用主证书颁发机构 - G5”。 该证书是所有我已经看了看电脑,所以如果你与VeriSign,而不是去爸爸走,我认为你能避免这个问题与Windows更新。

我没有注意到的VeriSign证书使用SHA1,而我的Go Daddy证书使用SHA256的签名算法和签名的哈希算法。 不知道如果该事项。

编辑#8:要求微软求助

见讨论和我在MSDN论坛上的结论: http://social.msdn.microsoft.com/Forums/en-US/wdk/thread/1fede768-7925-4f30-8eef-ce5bd08b0b60

Answer 1:

截至2012年9月27日,GoDaddy的驱动程序签名的证书将不会与Windows Vista或Windows 7的工作,它只能在Windows 8工作GoDaddy的证书只适用于SHA256。

我们最终得到一个从GlobalSign的(MS验证码)。

从http://msdn.microsoft.com/en-us/library/windows/hardware/hh967734%28v=vs.85%29.aspx :

签名驱动程序包有两个签名

在某些情况下,你可能想使用两个不同的签名签署的驱动程序包。 例如,假设你希望你的驱动程序在Windows 7和Windows 8,Windows 8的支持与SHA256散列算法创建的签名上运行,但Windows 7却没有。 对于Windows 7,您需要使用SHA1哈希算法创建的签名。

2012-09-28更新:GlobalSign的工作。 我让火狐15下载GlobalSign提供的链接(由取件密码保护)。 结束了与火狐拿着签名的证书,并下载其他3个GlobalSign的证书。 已签署的证书是从Firefox导出到.p12文件。 所有四个文件然后双击了使用自动默认为它们导入到MS证书存储。 驱动程序和包没有任何驱动程序签名错误签署和测试在Windows 7旗舰版64位。 司机BSoD'd但是这是一个不同的问题。 ;)

GoDaddy的只会给你的网站的信用减$ 15,而且你只撤销在购买后的30天。

2016年1月13日更新: https://technet.microsoft.com/en-us/library/security/3033929微软安全公告3033929可用性SHA-2代码签名支持Windows 7和Windows Server 2008 R2发布时间:3月10日,2015年...基本上,你需要安装微软提供的链接通常通过Windows更新自动完成安全更新。

我们现在使用EV代码签名从GlobalSign的证书。 警告:SafeSign不能与Windows服务(例如,buildbot从)工作。



Answer 2:

由于缺乏信誉的我不能赞成票rcpao的答案,但我想在协议发布。 我最近去通类似的过程试图注册一个Windows 7驱动程序包从GoDaddy的驱动程序签名证书。 总之,Win7的X64不会采取车手 - 肯定是由于GoDaddy的证书中使用SHA-2哈希算法。

虽然有文章指出,Windows 7的使用SHA-2签署兼容我不认为适用于驱动程序签名。 当然也有一些可用的模棱两可的文字,使得这个问题不太清楚。

我公司最终购买了包括司机内核模式签名一个DigiCert代码签名证书。 它的工作如预期,且费用相当GoDaddy的。



Answer 3:

回答我的问题:

我最终得到从去爸爸签名证书代码和键控它是SHA-2(另一种选择是SHA-1),因为我想有一天的可能性签署包含的.sys文件和GoDaddy的SHA-2驱动程序包选项可以让你做到这一点。 现在,我使用与转到爸爸G1 G2的交叉证书 (gdroot-g2_cross.crt)沿证书签署我们的.cat文件,所以信任链的样子:

  1. 转到爸爸2级认证机构(27 96 BA E6 3F 18 01 E2 77 26 1B A0 D7 77 70 02 20 8F EE E4)(将是您的用户的计算机上的可信根CA)
  2. 去爸爸根证书颁发机构 - G2(84 1D 4A 9F C9 D3 B2 F0 CA 5F AB 95 52 5A 06 B2 6A CF 83 22)(应该是受信任的根CA,但是它依赖于Windows更新工作可靠)
  3. 转到爸爸安全认证机构 - G2(27 AC 93 69 FA 52 F2 07 BB 26 27 CE FA CC是图4e F9 C3 19 B8)
  4. 我们公司

这一直是我们的需要伟大的工作,但不幸的是,该计划并没有让我们签包含内核模式的.sys文件的驱动程序包 ,因为信任链的根源并非是微软代码验证根。 根据我kmsigning.doc的阅读,如果你有内核模式驱动程序文件是使用微软的Go Daddy G2交叉证书 (mscvr交gdroot-g2.crt)的正确方法签名的.cat文件。 我还没有真正得到,为了工作还没有,但是这将是另一个讨论。

SHA 2

我要恭敬地rcpao和克里斯不同意。 据我所知,有一个与在Windows Vista或Windows 7 SHA256, 至少在驱动程序包安装的目的问题。 对于加载.sys文件到内核,有可能是一个不同的故事,尤其是因为我遇到的.sys现在签约的麻烦,我将不得不考虑这一点。

DefaultInstall

该INF文件DefaultInstall段的MSDN文档是错误的。 似乎有和驱动程序签名DefaultInstall之间不存在不兼容,我看现在之所以有应。



Answer 4:

听起来像是你需要得到你的驱动程序认证和微软,这可以通过使用来实现签约硬件认证工具包(HCK) 。 但对于Windows 10及以上,他们正在使用硬件实验室试剂盒(HLK) 。 这就是我已经签署了内核模式驱动程序,这是经过试验,且微软认证和签署的.sys文件,.cat文件后进行。



文章来源: Signed INF driver works on the computer where it was signed, not others