Minha pergunta está relacionada a esta . Infelizmente, essa pergunta é sobre uma CA diferente (Symantec) e usa um token de hardware diferente (da Safenet) e, embora as soluções fornecidas correspondam ao código de erro, as circunstâncias do meu caso não coincidem (entre outras coisas, o cartão inteligente) Fui informado que não parece registrar seu próprio provedor em HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providers
).
Estou usando um certificado de assinatura de código-fonte aberto do certum.pl. Estou usando o signtool.exe
SDK do Windows 10.0.18362.0
e estou vendo o seguinte erro (com 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.
O código de erro 0xC0000225
corresponde exatamente ao seguinte NTSTATUS
:
//
// MessageId: STATUS_NOT_FOUND
//
// MessageText:
//
// The object was not found.
//
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
... o que faz todo sentido, dados os HRESULT
códigos usados signtool.exe
e o mapa de infraestrutura subjacente 1: 1 para NTSTATUS
(é claro que, se um código de instalação for fornecido, HRESULT
existem códigos que não têm nome ntstatus.h
... o que quero dizer é o layout HRESULT
e NTSTATUS
)
Infelizmente, isso não me diz nada, já que muitas coisas podem não ser encontradas em um determinado momento ... Até o momento, ainda estou tentando reduzi-lo por conta própria usando o ProcMon. Para a tentativa falha, estou vendo 592 NAME NOT FOUND
resultados no ProcMon, que devem corresponder ao NTSTATUS
código acima ; a maioria deles para chaves e valores do registro.
Aqui está a signtool
linha de comando completa novamente:
"C: \ Arquivos de programas (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" assina / v / debug / a / i Certum / ph / du " https: //my.url " / d "descrição curta" / fd sha256 / tr " http://timestamp.digicert.com " / td sha256 "mysoftware.exe"
... e sim, verifiquei que ele realmente está usando isso signtool.exe
... na verdade, tentei com x86 e x64 com caminhos completos para uma boa medida (meu script atual aborda algumas das complexidades e prepara o ambiente para se ajustar PATH
para poder chamar signtool.exe
sem o caminho completo).
Curiosamente, ele funciona ao assinar com resumos SHA1 da seguinte forma:
"C: \ Arquivos de programas (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" assina / v / debug / a / i Certum / ph / du " https: //my.url " / d "descrição curta" / t " http://timestamp.digicert.com " "mysoftware.exe"
(as diferenças estão ausentes /fd sha256
e /td sha256
, em /t
vez do /tr
URL do serviço de carimbo de data e hora, ou seja, protocolo diferente)
A versão do software proCertum CardManager é 3.2.0.156, detalhes conforme a seguinte captura de tela:
(É a versão mais recente disponível no site da Certum no momento da redação deste documento.)
Enquanto isso, tentei também com o signtool.exe
(x86 e 64 respectivamente) de:
- SDK do Windows 8.1
- Windows 10.0.17763.0 SDK
... mesmos resultados e estou confuso sobre como posso resolver isso.