使用证书检查私钥时出错

时间:2014-03-20 18:56:20

标签: openssl x509

我正在使用EC并尝试使用OpenSSL函数CMS_sign()创建CMS并收到以下错误:(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_KEY_VALUES_MISMATCH)。

X509证书是由服务器端生成的,我只提供了公钥。如何获得有关我的私钥或X509证书有什么问题的更多信息?

2 个答案:

答案 0 :(得分:1)

  

如何获取有关我的私钥或X509证书有什么问题的更多信息?

您可以做一些事情(不能承受使用正确密钥对的答案:)。

首先,您应该运行通过EC_KEY_check_key加载的所有密钥。加载密钥只会检查其格式正确的PEMDER是否已编码。 EC_KEY_check_key执行您期望的检查,例如确保基点位于曲线上,公共点(公钥)是提升到私有指数(私钥)的基点。

加载错误密钥的OpenSSL示例位于Private key generated by openssl does not satisfy n = p * q。在提供的代码中,加载了无效密钥。它装得很好,因为它是形状良好的PEM。但是n = p * q没有成功,这使得密钥本身无效。

EC_KEY_check_key有点蹩脚。如果密钥有效则返回1,否则返回0。其他库提供了关键检查,如DH_check_key,返回一些失败掩码(如“p不是素数”和“g不是生成器”等)。

如果密钥有效,则可以检查密钥下的证书。检查证书的答案在Check that a file is certificate or a key,我在此不再赘述。答案简短:使用X509_verifyX509_verify_cert。成功时返回1,失败时返回0。

您可以通过X509_verify检索ERR_get_error的失败代码;当您从X509_verify_cert收到X509_STORE_CTX_get_error失败代码时。 X509_verify_cert错误将来自X509_STORE_CTX_get_error(3)中列出的错误,包括X509_V_OKX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT

答案 1 :(得分:0)

问题出在公钥上。 X509证书中的公钥与私钥中的公钥不匹配。问题没有用,所以有人请关闭/删除它。

相关问题