DigestInfo 沒有出現在 CSR 當 sha-1 用於簽章演算法

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3080171
徵狀
當您使用 certutil.exe 工具,以確認憑證簽章要求 (CSRs)、 certutil.exe 傳回下列訊息,即使 CSRs 包含 onlya 會簽署雜湊值 (不含 DigestInfo ASN.1 結構中):
簽章符合公開金鑰

注意事項
  • Certutil.exe 應該不會驗證 CSRs 只帶正負號的雜湊值,因為預期的 DigestInfo ASN.1 結構包含多個只有雜湊資料。
  • 其他工具,例如 openssl,標記為無效 CSRs。
會發生這個問題,當 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 使用密碼編譯 API 下一個層代 (CNG) 進行 sha-2,並且 CNG 不許遺漏的 DigestInfo。
附註雖然這篇文章說明使用 certutil.exe 時,就會發生的問題,任何使用 CryptoAPI 應用程式也能完全一樣 certutil.exe 配合。
其他相關資訊

驗證以簽署的 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. 


警告:本文為自動翻譯

內容

文章識別碼: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
意見反應