验证服务器证书是否与根CA证书匹配

时间:2013-12-05 22:46:43

标签: ssl openssl certificate ssl-certificate

我有服务器的SSL服务器证书,我有一个根CA证书,客户端可以在SSL握手期间验证此服务器证书。出于某种原因,我不确定我是否真的检索到了正确的根证书。有什么方法我可以看到我是否拥有正确的根证书?也许我提供文件和输出的openssl命令告诉我“根CA证书确认SSL证书”。

这可能吗?

感谢。

2 个答案:

答案 0 :(得分:7)

命令为openssl verify -CAfile ca.crt server.crt
如果两个证书匹配,则该命令将返回server.crt: OK

以上命令仅适用于pem格式 如果你有.p12文件,那么首先将其转换为pem格式:
openssl pkcs12 -in server.p12 -out server.crt -nodes

答案 1 :(得分:0)

有一个OpenSSL函数X509_verify使用它可以使用root的公钥来验证证书。

我的示例用法如下所示:

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

//Verify the certificate.
ret = X509_verify(cert, pubkey);

if(ret != 1)
   //not verified.

OpenSSL不会告诉您这个右根证书是否正确。您必须明确将其设置为受信任或不受信任。根证书是自签名的,因此其公钥应验证它。