OpenSSL:如何提供指向证书验证回调的自定义指针
我想使用 X509_STORE_set_verify_cb_func 接收证书验证错误。然后,我想将这些错误存储在列表中,并在 SSL_connect 返回后稍后进行处理。
然而,我的应用程序是多线程的,我想避免此回调的任何互斥锁。有什么方法可以传递“空指针”或将其存储在 X509_STORE_CTX 中的某个位置,以便我可以将错误存储在“正确”位置内,而不必使用全局错误列表并在执行 SSL_connect 时锁定该列表?
谢谢
I want to use X509_STORE_set_verify_cb_func to receive certificate validation errors. I then want to store these errors in a list and process it later after SSL_connect returned.
However my application is multithreaded and I wanted to avoid any mutex locking for this callback. Any ways to pass a "void pointer" or store this somewhere in the X509_STORE_CTX so I can store the error inside the "right" location and don't have to use a global error list and lock that while doing the SSL_connect?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
AFAIK 你确实被困住了 - 只需将它作为你自己的 id 下的条目填充即可。另一种选择是更通用地处理 SSL 回调 - 例如,请参阅 Apache 其 SSL 模块的 ssl_engine_kernel.c 中的 ssl_hook。虽然需要做更多的工作 - 它使您可以完全控制整个过程 - 并且完全在您的“自己的过程空间”中。
谢谢,
Dw。
AFAIK you are indeed stuck with that - just stuff it as an entry in there under your own id. The other option is to deal with the SSL callbacks a bit more generically - see for example ssl_hook in ssl_engine_kernel.c of Apache its SSL module. While a bit more work - it gives you complete control over the entire process - and entirely in your 'own process space'.
Thanks,
Dw.
如果您使用的是C11或更高版本,您可以定义一个全局thread_local变量
然后
此解决方案的优点是您不需要了解 X509_STORE_CTX 背后的结构的详细信息(它隐藏在最新版本的 OpenSSL 中)。
If you are using C11 or later, you can define a global thread_local variable
Then
The advantage of this solution is you do not need to know the details of the struct behind X509_STORE_CTX (it is hidden in recent versions of OpenSSL).