我在C中为SSL_CTX_set_verify()
编写自己的回调函数,以执行其他证书检查(当preverify_ok
参数为1
时)。但是,我想对叶证书(深度= 0)执行仅的检查。
有函数X509_STORE_CTX_get_error_depth()
可以获得错误的深度;但即使没有错误,我也想要当前的深度,所以只有当深度= 0时我才能进行额外的检查。 (请注意,函数SSL_CTX_get_verify_depth()
返回深度限制,不当前深度。)
有没有办法做我想做的事?
答案 0 :(得分:2)
尽管有名称,但在验证过程中 error_depth
确实是当前正在检查的证书。请参阅while
中internal_verify
中的crypto/x509/x509_vfy.c
循环。如果回调或任何内置检查 - 此处签名或过期,在X509_verify_cert
撤销,策略等的其他位置 - 决定证书是坏的,验证逻辑返回error_depth
导致验证返回的证书,并且来自'above'的后续调用发现了标识'error'证书的值。