Câu hỏi của tôi có liên quan đến cái này . Than ôi, câu hỏi đó là về một CA (Symantec) khác và sử dụng mã thông báo phần cứng khác (từ Safenet) và trong khi (các) giải pháp được cung cấp phù hợp với mã lỗi, thì trường hợp của tôi không (trong số những thứ khác là thẻ thông minh Tôi đã được cung cấp mà dường như không đăng ký nhà cung cấp riêng của mình theo HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providers
).
Tôi đang sử dụng chứng chỉ ký mã nguồn mở từ certum.pl. Tôi đang sử dụng signtool.exe
từ SDK Windows 10.0.18362.0
và tôi gặp lỗi sau (với 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.
Mã lỗi 0xC0000225
khớp chính xác như sau NTSTATUS
:
//
// MessageId: STATUS_NOT_FOUND
//
// MessageText:
//
// The object was not found.
//
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
... Điều này có ý nghĩa hoàn hảo, được cung cấp HRESULT
các mã được sử dụng bởi signtool.exe
và bản đồ cơ sở hạ tầng cơ bản 1: 1 NTSTATUS
(tất nhiên nếu mã cơ sở được cung cấp, HRESULT
các mã tồn tại không có tên trong ntstatus.h
... ý tôi là bố cục của HRESULT
và NTSTATUS
).
Than ôi, điều này không cho tôi biết bất cứ điều gì, vì rất nhiều thứ có thể không được tìm thấy tại bất kỳ thời điểm nào ... kể từ khi viết bài này, tôi vẫn đang cố gắng thu hẹp nó bằng cách sử dụng ProcMon. Đối với lần thử thất bại, tôi thấy 592 NAME NOT FOUND
kết quả trong ProcMon, tương ứng với NTSTATUS
mã trên ; hầu hết trong số họ cho các khóa và giá trị đăng ký.
Đây là signtool
dòng lệnh đầy đủ một lần nữa:
"C: \ Chương trình tệp (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" đăng nhập / v / debug / a / i Certum / ph / du " https: //my.url " / d "mô tả ngắn" / fd sha256 / tr " http://timestamp.digicert.com " / td sha256 "mysoftware.exe"
... và vâng, tôi đã xác minh rằng nó thực sự sử dụng điều đó signtool.exe
... thực tế tôi đã thử với x86 và x64 với các đường dẫn đầy đủ để có biện pháp tốt (tập lệnh thực tế của tôi bao gồm một số phức tạp và chuẩn bị môi trường để điều chỉnh PATH
để có thể gọi signtool.exe
không có đường dẫn đầy đủ của nó).
Thật kỳ lạ, nó hoạt động khi ký kết với các bản tóm tắt SHA1 như vậy:
"C: \ Chương trình tệp (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64 \ signtool.exe" đăng nhập / v / debug / a / i Certum / ph / du " https: //my.url " / d "mô tả ngắn" / t " http://timestamp.digicert.com " "mysoftware.exe"
(sự khác biệt là thiếu /fd sha256
và /td sha256
cũng như /t
thay vì /tr
URL dịch vụ đánh dấu thời gian, tức là giao thức khác nhau)
Phiên bản của phần mềm ProCertum CardManager là 3.2.0.156, chi tiết theo ảnh chụp màn hình sau:
(Đây là phiên bản mới nhất có sẵn từ trang web của Certum tại thời điểm viết bài này.)
Trong khi đó tôi cũng đã thử với signtool.exe
(x86 và 64) từ:
- SDK Windows 8.1
- SDK Windows 10.0.17763.0
... Kết quả tương tự và tôi bối rối về cách tôi có thể giải quyết vấn đề này.