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

And*_*oid 2 ssl openssl certificate ssl-certificate

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

那可能吗?

谢谢。

one*_*uth 7

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

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


dop*_*ime 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.
Run Code Online (Sandbox Code Playgroud)

OpenSSL 不会判断这个根证书是否正确。您必须明确将其设置为可信或不可信。根证书是自签名的,因此其公钥应该对其进行验证。