SSL_CTX_set_verify()回调和当前深度

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

有一个函数X509_STORE_CTX_get_error_depth()可以获取错误的深度; 但即使没有错误,我也想要当前的深度,所以只有当深度= 0时我才能进行额外的检查。 (注意,函数SSL_CTX_get_verify_depth()返回深度限制不是当前深度。)

有什么办法可以做我想要的吗?

尽管名称如此,但在validation过程中, error_depth确实是正在检查的当前证书。 请参阅crypto/x509/x509_vfy.cinternal_verify中的while循环。 如果回调或任何内置检查 – 这里是签名或过期,在X509_verify_cert撤销,策略等的其他地方 – 决定证书是坏的,validation逻辑返回错误,并在导致validation返回的证书上留下错误,并且来自’above’的后续调用会找到标识’error’证书的值。