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

Мы получили наш новый файл сертификата (*.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
    

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

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

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

    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 является -2147023728

1 ответ

Решение

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

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

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

Другие вопросы по тегам