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.exe
aus dem Windows SDK 10.0.18362.0
und 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 0xC0000225
genau dem folgenden NTSTATUS
:
//
// MessageId: STATUS_NOT_FOUND
//
// MessageText:
//
// The object was not found.
//
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
... was angesichts HRESULT
der von signtool.exe
und der zugrunde liegenden Infrastruktur 1: 1 zugewiesenen Codes durchaus Sinn macht NTSTATUS
(natürlich, wenn ein Einrichtungscode angegeben wird, HRESULT
existieren Codes, die keinen Namen haben in ntstatus.h
... was ich meine, ist das Layout von HRESULT
und 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 FOUND
in ProcMon 592 Ergebnisse angezeigt, die dem obigen NTSTATUS
Code entsprechen sollten . Die meisten davon für Registrierungsschlüssel und -werte.
Hier ist wieder die vollständige signtool
Befehlszeile:
"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.exe
ohne 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 sha256
und /td sha256
sowie /t
anstelle /tr
der 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.