DigestInfo bị mất trong một CSR khi sa-1 được sử dụng một thuật toán chữ ký

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3080171
Triệu chứng
Khi bạn sử dụng công cụ certutil.exe xác thực chứng chỉ ký yêu cầu (CSRs), certutil.exe trả về thông báo sau, mặc dù các CSRs chứa hạt ký giá trị băm (không có cấu trúc DigestInfo ASN.1):
Chữ ký phù hợp với khóa công khai

Lưu ý:
  • Certutil.exe không nên kiểm tra CSRs chỉ một ký băm giá trị vì cấu trúc DigestInfo ASN.1 dự kiến sẽ chứa hơn chỉ băm dữ liệu.
  • Các công cụ khác, chẳng hạn như openssl, đánh dấu kiểm CSRs là không hợp lệ.
Sự cố này xảy ra khi sa-1 được sử dụng trong một chữ ký thuật toán, chẳng hạn như "1.2.840.113549.1.1.5 sha1RSA."

Khi CSR được ký bằng sa-2, như "1.2.840.113549.1.1.11 sha256RSA," certutil.exe trả về lỗi mong đợi sau:

0XC000A000 (NT: 0XC000A000 STATUS_INVALID_SIGNATURE)

Lưu ý: Vấn đề này được giới hạn đến chữ ký được tạo bởi sa-1.
Nguyên nhân
Sự cố này xảy ra do các phương pháp khác nhau mà CAPI2uses tương tác với các thành phần cơ bản trong ngăn xếp CryptoAPI. Các phương pháp bao gồm:
  • CAPI 2 sử dụng hợp lệ Cryptography API 1 (CAPI 1) sa-1 và CAPI 1allows DigestInfo phải mất.
  • CAPI 2 Cryptography API tiếp tạo (CNG) sử dụng cho SA-2 và CNG không DigestInfo bị thiếu.
Lưu ý Mặc dù bài viết này mô tả sự cố chỉ xảy ra khi certutil.exe được sử dụng, bất kỳ ứng dụng nào sử dụng CryptoAPI sẽ hoạt động chính xác như certutil.exe.
Thông tin thêm

Xác minh một CSR được ký với "1.2.840.113549.1.1.5 sha1RSA" và DigestInfo:

PKCS10 Certificate Request: Version: 1 Subject: CN=Test User Signature Algorithm: Algorithm ObjectId: 1.2.840.113549.1.1.5 sha1RSA Algorithm Parameters: 05 00 Signature: UnusedBits=0 0000 88 fc ea 9b cb 35 17 b8 3c 4a be e1 c9 94 23 e3 00f0 71 5c 8f 81 5f 24 bd af 4b 00 ea e2 b4 08 6f 3f Signature matches Public Key Key Id Hash(rfc-sha1): b3 1c 76 1c d9 67 d2 8d 62 15 4a 1c 47 4d dd a6 65 03 9d 5d Key Id Hash(sha1): fb b1 8f 14 39 5c fb 63 81 90 56 e8 37 e1 9b bd e2 a6 79 64 CertUtil: -dump command completed successfully. 

Xác minh một CSR được ký với "1.2.840.113549.1.1.11 sha256RSA" và DigestInfo:

PKCS10 Certificate Request: Version: 1 Subject: CN=Test User Signature Algorithm: Algorithm ObjectId: 1.2.840.113549.1.1.11 sha256RSA Algorithm Parameters: 05 00 Signature: UnusedBits=0 0000 2c 23 b3 36 f4 10 10 94 99 02 95 8f 64 1d 71 0c 00f0 6c f4 13 ae 0e 6b b1 ef c4 1e 10 c0 1f 34 4d 16 Signature does not match Public key: c000a000 Cannot decode object: The cryptographic signature is invalid. 0xc000a000 (NT: 0xc000a000 STATUS_INVALID_SIGNATURE) CertUtil: -dump command FAILED: 0xc000a000 (NT: 0xc000a000 STATUS_INVALID_SIGNATURE) CertUtil: The cryptographic signature is invalid. 


Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3080171 - Xem lại Lần cuối: 12/03/2015 16:46:00 - Bản sửa đổi: 2.0

Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Foundation, Windows Server 2012 R2 Essentials, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8.1

  • kbsurveynew kbexpertiseadvanced kbprb kbtshoot kbmt KB3080171 KbMtvi
Phản hồi