OpenSSL:如何提供指向证书验证回调的自定义指针

发布于 2024-10-01 12:41:03 字数 239 浏览 8 评论 0原文

我想使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清音悠歌 2024-10-08 12:41:03

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.

乱世争霸 2024-10-08 12:41:03

如果您使用的是C11或更高版本,您可以定义一个全局thread_local变量

thread_local void * openssl_verify_context;

然后

  • 在设置回调之前设置openssl_verify_context(即在X509_STORE_set_verify_cb_func之前)。
  • 在回调中使用 openssl_verify_context。
  • 如果需要,请在验证证书后(即在 PKCS7_dataVerify 之后)读取并取消设置 openssl_verify_context。

此解决方案的优点是您不需要了解 X509_STORE_CTX 背后的结构的详细信息(它隐藏在最新版本的 OpenSSL 中)。

If you are using C11 or later, you can define a global thread_local variable

thread_local void * openssl_verify_context;

Then

  • Set openssl_verify_context before setting the callback (i.e. before X509_STORE_set_verify_cb_func).
  • Use openssl_verify_context in the callback.
  • If needed read and unset openssl_verify_context after validating the certificate (i.e. after PKCS7_dataVerify).

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文