【问题标题】:SSL_CTX_set_verify() callback and depth of root CASSL_CTX_set_verify() 回调和根 CA 的深度
【发布时间】:2016-03-21 17:41:57
【问题描述】:

我正在用 C 语言为 SSL_CTX_set_verify() 编写自己的回调函数来执行额外的证书检查(当 preverify_ok 参数为 1 时)。但是,我只想对根 CA 证书执行检查。

在回调中,函数 X509_STORE_CTX_get_error_depth() gets the current depth 深度为 0 是叶证书。但是我怎样才能知道根 CA 证书的深度是多少呢? IE。 第一次调用我的回调的深度,以便我可以将其与当前深度进行比较。

是的,有SSL_CTX_get_verify_depth() 函数,但它返回深度limit(如果有的话),所以这不是我想要的。

【问题讨论】:

    标签: c ssl openssl ssl-certificate


    【解决方案1】:

    在根 CA 的情况下,存储上下文中的当前证书和颁发者证书将相同。因此,在您的代码中进行如下检查应该可以解决问题:

    if(X509_STORE_CTX_get0_current_issuer(ctx) == X509_STORE_CTX_get_current_cert(ctx))
    {
      //Do the special root certificate related checks.
    }
    

    【讨论】:

    • 虽然在大多数情况下确实如此,但并不需要如此。信任锚不需要像大多数情况下那样是自签名 CA,但只要是信任存储中的任何 CA 就足够了。
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 2012-07-16
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2012-06-05
    相关资源
    最近更新 更多