STATUS_NOT_FOUND как «Неожиданная внутренняя ошибка» в signtool.exe - PullRequest
0 голосов
/ 11 ноября 2019

Мой вопрос связан с этим . Увы, этот вопрос касается другого CA (Symantec) и использует другой аппаратный токен (от Safenet), и хотя предоставленные решения соответствуют коду ошибки, обстоятельства моего случая не соответствуют (среди прочего, смарт-картам). Мне предоставили, кажется, я не регистрирую своего собственного провайдера под HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providers).

Я использую сертификат для подписи кода с открытым исходным кодом от certum.pl. Я использую signtool.exe из Windows SDK 10.0.18362.0 и вижу следующую ошибку (с signtool sign /v /debug):

signtool.exe sign /v /debug /a /i Certum /ph /du "https://my.url" /d "short description" /fd sha256 /tr "http://timestamp.digicert.com" /td sha256 "mysoftware.exe"
The following certificates were considered:
    Issued to: Open Source Developer, ...
    Issued by: Certum Code Signing CA SHA2
    Expires:   ...
    SHA1 hash: ...
    Issued to: Open Source Developer, ...
    Issued by: Certum Code Signing CA SHA2
    Expires:   ...
    SHA1 hash: ...
After EKU filter, 2 certs were left.
After expiry filter, 1 certs were left.
After Issuer Name filter, 1 certs were left.
After Private Key filter, 1 certs were left.
The following certificate was selected:
    Issued to: Open Source Developer, ...
    Issued by: Certum Code Signing CA SHA2
    Expires:   ...
    SHA1 hash: ...
Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-1073741275/0xc0000225)
SignTool Error: An unexpected internal error has occurred.

Код ошибки 0xC0000225 точно соответствует следующему NTSTATUS:

//
// MessageId: STATUS_NOT_FOUND
//
// MessageText:
//
// The object was not found.
//
#define STATUS_NOT_FOUND                 ((NTSTATUS)0xC0000225L)

... что имеет смысл, учитывая HRESULT коды, используемые signtool.exe и карту базовой инфраструктуры от 1: 1 до NTSTATUS (конечно, , если указан код объекта, HRESULT существуют коды, которые не имеют названия в ntstatus.h ... я имею в виду макет HRESULT и NTSTATUS).

Увы, это не такне говорите мне ничего, поскольку многие вещи не могут быть найдены в любой момент времени ... на момент написания этой статьи я все еще пытаюсь сузить это самостоятельно, используя ProcMon. Для неудачной попытки я вижу 592 NAME NOT FOUND результатов в ProcMon, что должно соответствовать приведенному выше коду NTSTATUS;большинство из них для ключей и значений реестра.


Вот еще раз полная командная строка signtool:

"C: \ Program Files (x86) \ Windows Kits \ \10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe "sign / v / debug / a / i Certum / ph / du" https://my.url" / d "краткое описание" / fd sha256 / tr "http://timestamp.digicert.com" / td sha256 "mysoftware.exe"

... и да, я убедился, что он действительно использует это signtool.exe ... на самом деле я пробовал с x86 и x64 с полными путямидля хорошей меры (мой настоящий скрипт оборачивает некоторые сложности и подготавливает среду для настройки PATH, чтобы можно было вызывать signtool.exe без полного пути).

Как ни странно, он работает при подписании с дайджестами SHA1например так:

"C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" sign / v / debug / a / i Certum /ph / du "https://my.url" / d" краткое описание "/ t" http://timestamp.digicert.com" "mysoftware.exe"

(отличия отсутствуют /fd sha256 и /td sha256 а также /t вместо /tr для URL службы метки времени, т.е. другого протокола)

Версия программного обеспечения proCertum CardManager - 3.2.0.156, подробности приведены на следующем снимке экрана:

proCertum CardManager software version 3.2.0.156

(Это последняя версия, доступная на веб-сайте Certum на момент написания этой статьи.)


Я тем временем пробовал также с signtool.exe (x86 и 64 соответственно)от:

  • Windows 8.1 SDK
  • Windows 10.0.17763.0 SDK

... те же результаты, и я озадачен тем, как я могу решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...