我正在通過C#使用p/invoked CryptoAPI調用在應用程序中使用創建一些自簽名證書。我將正確的信息分配給CERT_INFO結構,通過使用CryptExportPublicKey獲取公鑰。當我使用加密的CryptSignAndEncryptCertificate證書,所得到的值看起來是正確的,但使用OpenSSL -verify測試時,我收到以下錯誤:證書未正確簽名
6704:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01:.\crypto\rsa\rsa_pk1.c:100:
6704:error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed:.\crypto\rsa\rsa_eay.c:721:
6704:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:.\crypto\asn1\a_verify.c:221:
當http://certlogik.com/decoder/檢查在CSR解碼器證書,模當用KeyPal檢查公鑰時,公鑰信息的字段具有不在那裏的前導00字節。任何人都可以告訴我我需要做什麼來解決這個錯誤?
什麼是CryptSignAndEncryptCertificate?你有任何代碼嗎?在使用OpenSSL API時,通常只需以編程方式創建自簽名證書;你不會經歷CSR的中間步驟。 OpenSSL的'req'工具可以創建自簽名的。你使用命令'openssl req -x509 ...'。 '-x509'告訴它創建一個自簽名的,而不是一個請求。你可以在'/apps/req.c'找到源代碼。 –
jww
2014-08-28 01:19:26
CryptSignAndEncodeCertificate是Windows CryptoAPI中的函數調用之一。我沒有使用openSSL。 – 2014-08-28 11:14:52
你確定'CryptSignAndEncryptCertificate'是一個Windows函數嗎? http://www.google.com/#q=CryptSignAndEncryptCertificate+msdn返回0個結果。如果你不使用OpenSSL,那麼你爲什麼會有OpenSSL錯誤消息? – jww 2014-08-28 15:38:30