STATUS_NOT_FOUND như là Một lỗi nội bộ không mong muốn, lỗi trong signtool.exe


8

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.exetừ SDK Windows 10.0.18362.0và 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 0xC0000225khớ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 HRESULTcác mã được sử dụng bởi signtool.exevà 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, HRESULTcác mã tồn tại không có tên trong ntstatus.h... ý tôi là bố cục của HRESULTNTSTATUS).

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 FOUNDkết quả trong ProcMon, tương ứng với NTSTATUSmã trên ; hầu hết trong số họ cho các khóa và giá trị đăng ký.


Đây là signtooldò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.exekhô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/td sha256cũng như /tthay vì /trURL 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:

phần mềm ProCertum CardManager phiên bản 3.2.0.156

(Đâ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.



@HansPassant: vâng, đó là câu hỏi tôi liên kết. Xem đoạn đầu tiên của câu hỏi của tôi. Nếu lỗi trong trình cài đặt SafeNet là về đăng ký nhà cung cấp mật mã (hay đúng hơn là chính tả), tôi nghĩ rằng thực tế là Certum không đăng ký quy tắc nhà cung cấp riêng của mình rằng điều này áp dụng ở đây. Hay tôi còn thiếu gì?
0xC0000022L

@HansPassant song song hóa ra là trong cả hai trường hợp, EV certs đã được đề cập. Mặc dù trong trường hợp của tôi, chứng chỉ không thực sự là EV.
0xC0000022L

Câu trả lời:


3

Hóa ra vấn đề là một tùy chọn không được đặt chính xác theo mặc định (tên cho thấy rằng nó chỉ áp dụng cho chứng chỉ EV, nhưng có vẻ như nó cũng áp dụng cho các chứng chỉ có thông báo SHA2). Cảm ơn mọi người ủng hộ Certum!

hộp thoại Tùy chọn Trình quản lý thẻ proCertum

Tôi nhấn mạnh các tùy chọn có liên quan.

Cũng lưu ý rằng tôi đã phải

  1. thoát khỏi ứng dụng (từ TNA hay còn gọi là "khay hệ thống")
  2. bắt đầu ứng dụng nâng lên từ thư mục chương trình của nó
  3. kiểm tra hộp kiểm
  4. nhấn nút OK
  5. bỏ hộp thông báo (thành công)
  6. khởi động lại

... Khi tôi đã thử trước đó mà không nâng cao thì quá trình thất bại. Và vâng, tôi đã thấy biểu tượng "lá chắn", nhưng tôi đã cho rằng ứng dụng chứa logic để thực hiện độ cao (không phải vậy).

Khi tôi thử lại ký sau khi khởi động lại, nó không còn là Trình quản lý thẻ proCertum nhắc về mã PIN của thẻ, mà là Windows. Và ký kết làm việc như một lá bùa.

NB: vẫn không có mục bên dưới HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Providerssau các bước này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.