SSL_CTX_set_verify()回调和根CA的深度

时间:2015-12-15 19:18:41

标签: c ssl openssl ssl-certificate

我在C中为SSL_CTX_set_verify()编写自己的回调函数以执行其他证书检查(当preverify_ok参数为1时)。但是,我只想对根CA证书执行检查。

在回调中,函数X509_STORE_CTX_get_error_depth() gets the current depth的深度为0,即叶证书。但是,如何找出根CA证书的深度呢?即第一次时间的深度我的回调被调用,所以我可以将它与当前深度进行比较。

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

1 个答案:

答案 0 :(得分:1)

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

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