SSL_CTX_set_verify() 回调和当前深度

SSL_CTX_set_verify() callback and current depth

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

有获取错误深度的函数X509_STORE_CTX_get_error_depth();但是即使没有错误我也想要当前深度,所以我只能在深度=0时执行额外的检查。 (注意函数 SSL_CTX_get_verify_depth() returns 深度 limit 不是 当前深度。)

有什么方法可以做我想做的事吗?

不管名称如何,在验证过程中 error_depth确实是正在检查的当前证书。请参阅 crypto/x509/x509_vfy.c 中的 internal_verify 中的 while 循环。如果回调或任何内置检查——这里是签名或过期,在 X509_verify_cert 吊销、政策等其他地方——确定证书是坏的,用 [=10 验证逻辑 returns =] 留在导致验证到 return 的证书上,来自 'above' 的后续调用找到标识 'error' 证书的值。