Meine Frage bezieht sich auf diese . Leider handelt es sich bei dieser Frage um eine andere Zertifizierungsstelle (Symantec), die ein anderes Hardware-Token (von Safenet) verwendet. Die dort bereitgestellten Lösungen stimmen zwar mit dem Fehlercode überein, die Umstände meines Falls jedoch nicht (unter anderem die Smartcard) Mir wurde zur Verfügung gestellt, scheint keinen eigenen Anbieter unter zu registrieren HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providers).
Ich verwende ein Open Source-Codesignaturzertifikat von certum.pl. Ich verwende das signtool.exeaus dem Windows SDK 10.0.18362.0und sehe den folgenden Fehler (mit 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.
Der Fehlercode entspricht 0xC0000225genau dem folgenden NTSTATUS:
//
// MessageId: STATUS_NOT_FOUND
//
// MessageText:
//
// The object was not found.
//
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
... was angesichts HRESULTder von signtool.exeund der zugrunde liegenden Infrastruktur 1: 1 zugewiesenen Codes durchaus Sinn macht NTSTATUS(natürlich, wenn ein Einrichtungscode angegeben wird, HRESULTexistieren Codes, die keinen Namen haben in ntstatus.h... was ich meine, ist das Layout von HRESULTund NTSTATUS).
Leider sagt mir das nichts, da viele Dinge zu einem bestimmten Zeitpunkt möglicherweise nicht gefunden werden ... Zum jetzigen Zeitpunkt versuche ich immer noch, sie mit ProcMon selbst einzugrenzen. Für den fehlgeschlagenen Versuch werden NAME NOT FOUNDin ProcMon 592 Ergebnisse angezeigt, die dem obigen NTSTATUSCode entsprechen sollten . Die meisten davon für Registrierungsschlüssel und -werte.
Hier ist wieder die vollständige signtoolBefehlszeile:
"C: \ Programme (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" sign / v / debug / a / i Certum / ph / du " https: //my.url " / d "Kurzbeschreibung" / fd sha256 / tr " http://timestamp.digicert.com " / td sha256 "mysoftware.exe"
... und ja, ich habe überprüft, ob es das wirklich nutzt signtool.exe... tatsächlich habe ich es mit x86 und x64 mit vollständigen Pfaden versucht (mein eigentliches Skript umschließt einige der Komplexitäten und bereitet die Umgebung auf die Anpassung vor PATH, um anrufen zu können signtool.exeohne seinen vollen Weg).
Seltsamerweise funktioniert es beim Signieren mit SHA1-Digests wie folgt:
"C: \ Programme (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" sign / v / debug / a / i Certum / ph / du " https: //my.url " / d "Kurzbeschreibung" / t " http://timestamp.digicert.com " "mysoftware.exe"
(Unterschiede sind die fehlende /fd sha256und /td sha256sowie /tanstelle /trder Zeitstempel-Service-URL, dh anderes Protokoll)
Die Version der proCertum CardManager-Software ist 3.2.0.156, Details wie im folgenden Screenshot dargestellt:
(Es ist die neueste Version, die zum Zeitpunkt des Schreibens auf der Certum-Website verfügbar ist.)
Ich habe mittlerweile auch mit dem signtool.exe(x86 bzw. 64) versucht von:
- Windows 8.1 SDK
- Windows 10.0.17763.0 SDK
... die gleichen Ergebnisse und ich bin verwirrt, wie ich das lösen kann.

