PVK2PFX Ошибка 0x80070490 - Не удается найти сертификаты, которые соответствуют ключу - PullRequest
4 голосов
/ 16 августа 2011

Мы получили наш новый файл сертификата (* .cer) от Thawte, и я прошел стандартные процедуры, чтобы разрешить его использование с подписью кода.

Если я использую наш старый (рабочий) сертификат:

  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
    

    запрашивает пароль файла секретного ключа, введите его, нажмите OK

    enter image description here

И мы готовы идти; готов к использованию 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
    

    запрашивает пароль файла секретного ключа, введите его, нажмите OK

    enter image description here

    ERROR: Cannot find certificates that match the key.
    (Error Code = 0x80070490).
    

Что не так?


Примечания:

  • мы использовали один и тот же файл личного ключа (* .pvk) в течение десятилетия
  • в этом году Thawte выдал нам 2-летний сертификат; вместо обычного 1 года
  • в этом году Thawte изменил свой сертификат подписи с Thawte Code Signing CA на Thawte Code Signing CA - G2
  • Google говорит, что никто никогда не получал ошибку Не удается найти сертификаты, соответствующие ключу.
  • Windows SDK содержит только две ссылки на код ошибки 0x80070490:

    • Файл заголовка Visual Foxpro для 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 is -2147023728

1 Ответ

4 голосов
/ 17 августа 2011

Оказывается, в этом году нам дали новый закрытый ключ.

Ну, вы не дали закрытый ключ, сертификат + ключ извлекается через браузер и сохраняетсяв магазине сертификатов.Оттуда мы можем экспортировать a .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 может работать без взаимодействия с пользователем.

Но ответ на этот вопрос был: Закрытый ключ не соответствует сертификату.

...