Sha-1 签名算法中使用时,DigestInfo 是 CSR 中缺少

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3080171
症状
当您使用 certutil.exe 工具来验证证书签名请求 (Csr)、 certutil.exe 返回以下消息,即使 Csr 包含 onlya 签名哈希值 (无 DigestInfo ASN.1 结构):
签署与公钥匹配

备注:
  • Certutil.exe 应仅签名的哈希值时,不验证 Csr,因为预期的 DigestInfo ASN.1 结构多只包含哈希数据。
  • 其他工具,例如 openssl,将标记为无效 Csr。
如中的签名算法,使用 sha-1,时,会发生此问题"1.2.840.113549.1.1.5 sha1RSA。"

当 CSR 进行签名如下所示使用 sha-2,"1.2.840.113549.1.1.11 sha256RSA,"certutil.exe 返回下列预期的错误:

0XC000A000 (NT: 0XC000A000 STATUS_INVALID_SIGNATURE)

注意:此问题仅限于由 sha-1 的签名。
原因
出现此问题的不同方法,CAPI2uses 与 CryptoAPI 堆栈中的基础组件进行交互。这些方法如下所示:
  • CAPI 2 使用传统加密 API 1 (CAPI 1) sha-1 和 CAPI 1allows DigestInfo 找不到。
  • CAPI 2 使用 sha-2,加密 API 下一代 (CNG) 和 CNG 不允许 DigestInfo 找。
注意:本文介绍了使用 certutil.exe 时出现的问题,虽然 certutil.exe 一样完全配合使用 CryptoAPI 任何应用程序。
更多信息

验证签名与 CSR"1.2.840.113549.1.1.5 sha1RSA",而 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. 

验证签名与 CSR"1.2.840.113549.1.1.11 sha256RSA",而 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. 


属性

文章 ID:3080171 - 上次审阅时间:12/03/2015 16:47:00 - 修订版本: 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 KbMtzh
反馈