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

5
我有一台服务器的SSL证书,还有一个根CA证书,客户端可以在SSL握手期间验证此服务器证书。但我不确定是否真的检索到了正确的根证书。有没有办法可以查看我是否拥有正确的根证书?也许有一个openssl命令,我可以提供两个文件,输出告诉我“根CA证书确认SSL证书”。这是可能的吗?谢谢。
2个回答

13

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

上述命令仅适用于pem格式。
如果您有.p12文件,则需首先将其转换为pem格式:
openssl pkcs12 -in server.p12 -out server.crt -nodes


openssl verify -CAfile ca.crt server.p12 我有,所以它是一个p12文件。该命令返回无法加载证书。 - AndyAndroid

0

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

下面是它的示例用法:

//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不能确定该根证书是否正确。您必须明确设置它为受信任的或不受信任的。根证书是自签名的,因此其公钥应该可以验证它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接