SSL_CTX_set_verify()回调和当前深度

时间:2015-10-20 22:52:23

标签: c ssl openssl ssl-certificate

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

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

有没有办法做我想做的事?

1 个答案:

答案 0 :(得分:2)

尽管有名称,但在验证过程中 error_depth确实是当前正在检查的证书。请参阅whileinternal_verify中的crypto/x509/x509_vfy.c循环。如果回调或任何内置检查 - 此处签名或过期,在X509_verify_cert撤销,策略等的其他位置 - 决定证书是坏的,验证逻辑返回error_depth导致验证返回的证书,并且来自'above'的后续调用发现了标识'error'证书的值。