PVK2PFX错误0x80070490 - 找不到与密钥匹配的证书

时间:2011-08-15 21:43:21

标签: code-signing signtool

我们从Thawte获得了新的证书(* .cer)文件,我完成了标准程序,允许它与代码签名一起使用。

如果我使用旧的(工作)证书:

  1. 将证书( .cer)转换为软件发布证书( .spc)

    >Cert2Spc.exe Avatar.cer Avatar.spc
    Succeeded
    
  2. 将我们的私钥文件(* .pvk)与SPC合并为一个PFX:

    >pvk2pfx.exe -pvk Avatar.pvk -spc Avatar.spc -pfx Avatar.pfx -f
    

    提示输入私钥密码,输入密码,单击“确定”

    enter image description here

  3. 我们很高兴;准备好使用signtool


    我们现在拥有证书,我遵循相同的程序:

    1. 将证书( .cer)转换为软件发布证书( .spc)

      >Cert2Spc.exe Avatar.cer Avatar.spc
      Succeeded
      
    2. 将我们的私钥文件(* .pvk)与SPC合并为一个PFX:

      >pvk2pfx.exe -pvk Avatar.pvk -spc Avatar.spc -pfx Avatar.pfx -f
      

      提示输入私钥密码,输入密码,单击“确定”

      enter image description here

      ERROR: Cannot find certificates that match the key.
      (Error Code = 0x80070490).
      
    3. 出了什么问题?


      注意:

      • 我们使用了相同的私钥文件(* .pvk)十年
      • 今年Thawte给了我们一份 2年证书;而不是通常的1年
      • 今年Thawte将签名证书从 Thawte Code Signing CA 更改为 Thawte Code Signing CA - G2
      • Google表示 nobody 从未收到错误无法找到与密钥匹配的证书。
      • Windows SDK仅包含对错误代码0x80070490的两个引用:

        • Visual Foxpro for Windows头文件(vfwmsgs.h):

          //
          // MessageId: E_PROP_ID_UNSUPPORTED
          //
          // MessageText:
          //
          // The specified property ID is not supported for the specified property set.%0
          //
          #define E_PROP_ID_UNSUPPORTED            ((HRESULT)0x80070490L)
          

          几乎可以肯定是红鲱鱼; Foxpro的?

        • 在RSS屏幕保护示例(RssItem.cs

          中注释掉了代码
          // "Element not found. (Exception from HRESULT: 0x80070490)"
          

          几乎可以肯定是红鲱鱼; XML?

      • 0x80070490的十进制版本为-2147023728

1 个答案:

答案 0 :(得分:4)

事实证明,今年我们获得了一个新的私钥。

嗯,你不是私钥,证书+密钥是通过浏览器获取并存储在证书存储中的。从那里我们可以导出一个.PFX(A pfx包含证书和私钥)。

通过从浏览器的证书商店导出此PFX,我们可以直接使用它来使用signtool对代码进行签名。

注意:我们实际上受到了惩罚,并且经历了一些步骤:

+--[.pfx]---+     +--[.cer]---+     +--[.spc]---+           +--[.pfx]---+
|Certificate|====>|Certificate|====>|Software   |=========> |Certificate|
|    +      |     +-----------+     |Publishing |           |     +     |
|Private Key|==+       +            |Certificate|   +=====> |Private Key|
+-----------+  |                    +-----------+   |       +-----------+
               |                                    | 
               |                                    |
               |  +--[.pem]---+     +--[.pvk]---+   |
               +=>|Private Key| ==> |Private Key|===+
                  +-----------+     +-----------+

但是所有这条路线都给了我们一个没有密码保护的私钥文件(*.pvk);所以signtool可以在没有用户互动的情况下运行。

但这个问题的答案是:私钥与证书不符。