openssl X509_verify_cert() API是否validation证书中的RSA签名?
据我了解,该API只检查证书的有效性(如date检查和所有)。
有人请澄清?
X509_verify_cert()
本质上检查证书的有效性。 这包括验证已经签名属于CA的证书的签名是有效的,并且是在日期 – 它会像这样处理整个链。
但是,它并没有验证给定的RSA签名是否有效,尽管它将RSA签名验证为其工作的一部分,但这不是您应该使用的。
一般来说,就像浏览SSL站点时出现证书错误时运行的功能一样。
API X509_verify_cert()根据在X509_store结构中设置的Verification标志进行验证。 有了这个API你可以验证证书
1.Expiry
2.Issuer(信任路径)
2.1中级证书到期,
2.2中级证书信任链,
2.3中级证书撤销,
3.撤销CRL证书
3.1 CRL到期
3.2 CRL信任路径
(注意:确认CRL至少需要在store_ctx变量中至少有一个证书)
4.信任链的深度
5.证书签名
在x509_vfy.h文件中提到了用于不同验证的标志
/* Send issuer+subject checks to verify_cb */ #define X509_V_FLAG_CB_ISSUER_CHECK 0x1 /* Use check time instead of current time */ #define X509_V_FLAG_USE_CHECK_TIME 0x2 /* Lookup CRLs */ #define X509_V_FLAG_CRL_CHECK 0x4 /* Lookup CRLs for whole chain */ #define X509_V_FLAG_CRL_CHECK_ALL 0x8 /* Ignore unhandled critical extensions */ #define X509_V_FLAG_IGNORE_CRITICAL 0x10 /* Disable workarounds for broken certificates */ #define X509_V_FLAG_X509_STRICT 0x20 /* Enable proxy certificate validation */ #define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 /* Enable policy checking */ #define X509_V_FLAG_POLICY_CHECK 0x80 /* Policy variable require-explicit-policy */ #define X509_V_FLAG_EXPLICIT_POLICY 0x100 /* Policy variable inhibit-any-policy */ #define X509_V_FLAG_INHIBIT_ANY 0x200 /* Policy variable inhibit-policy-mapping */ #define X509_V_FLAG_INHIBIT_MAP 0x400 /* Notify callback that policy is OK */ #define X509_V_FLAG_NOTIFY_POLICY 0x800 /* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ #define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 /* Delt1a CRL support */ #define X509_V_FLAG_USE_DELTAS 0x2000 /* Check selfsigned CA signature */ #define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000