如何比较两个openssl X509证书对象C ++

时间:2014-11-15 09:07:33

标签: openssl x509

我有两个X509个对象

X509 *cert1;
X509 *cert2;

如何确定这两个证书是相同还是不同?哪个属性对于两个相同的证书是相同的?

1 个答案:

答案 0 :(得分:1)

X509_cmp(const X509 *a, const X509 *b)非常适合逐字节比较两个证书的SHA_1哈希值。所以@AlexBezuglyi是100%正确的。但实际上我打算(但无法在此问题中表达)验证服务器证书是否由根证书(可信CA签名证书)签名。

使用X509_verify

int X509_verify的签名是

int X509_verify(X509 * x509, EVP_PKEY * pkey);

假设您在root中拥有根证书,在cert

中拥有服务器证书
X509 * root;
X509 * cert;

//Get local certificate into root
//Get server certificate into cert

//Get the public key.
EVP_PKEY * pubkey = X509_get_pubkey(root);

//verify. result less than or 0 means not verified or some error.
int result = X509_verify(cert, pubkey);

//free the public key.
EVP_PKEY_free(pubkey);