openssl X509_verify_cert()是否验证证书中的签名?

时间:2012-05-08 09:22:00

标签: c linux openssl

openssl X509_verify_cert() API是否验证证书中的RSA签名?

据我了解,该API仅检查证书有效性(如日期检查和所有)。

有人请澄清一下吗?

2 个答案:

答案 0 :(得分:3)

X509_verify_cert()基本上检查证书的有效性。这包括验证签署了属于CA的证书的签名是否有效且是否在日期 - 它将像这样处理整个链。

但是,它并不验证给定的RSA签名是否有效 - 尽管它将RSA签名验证为其工作的一部分,但它不是您应该使用的。

从广义上讲,它就像浏览SSL站点时出现证书错误时运行的功能一样。

答案 1 :(得分:3)

API X509_verify_cert()根据X509_store结构中设置的验证标志u进行验证。 使用此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