首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在自定义x509中获取服务器发送的openssl cert_verify_callback证书链

在自定义x509中获取服务器发送的openssl cert_verify_callback证书链
EN

Stack Overflow用户
提问于 2013-01-16 19:29:39
回答 1查看 1.3K关注 0票数 4

我正在考虑使用使用Windows存储(通过回调)的证书验证过程来覆盖默认证书验证过程。该应用程序是一个web客户端,我需要接受公司范围内添加到系统存储中的自签名证书。

一旦我有了一条(可能是不完整的)链,我

  • 创建内存中的WinCrypt存储,
  • 向其添加服务器提供的链(最终证书除外)
  • 使用来自临时存储和系统存储的WinCrypt构建完整的链
  • 使用WinCrypt (从SSL对象传递servername值)验证链

但是链()返回可信链,只有在cert()运行后才可用。

我需要的是X509_STORE_CTX::untrusted (它只有握手的证书),但它显然不是通过API导出的。

我可以将最终证书传递给WinCrypt,但这意味着要下载我想要避免的中间证书。

我的问题是,我是不是在倒退?我应该让openssl构建链并进行验证,然后使用WinCrypt重做吗?这看起来很恶心。我可以添加一个X509_STORE_CTX_get_untrusted()函数并重新构建libeay32.dll,但我不希望如此。

EN

回答 1

Stack Overflow用户

发布于 2013-01-16 22:53:49

据我所知,X509_verify_cert.是默认的验证函数。如果不设置自己的验证回调(使用SSL_CTX_set_cert_verify_callback),则调用此函数。它在crypto/x509/x509_vfy.c.中定义。我建议您查看这个函数的源代码,找出您应该做什么来说服OpenSSL协作(例如,正确地返回错误代码)。

我希望这能帮上忙。

看起来你是对的:X509_STORE_CTX::untrusted的访问函数是有的,所以它可能是OpenSSL的“私有”功能。在X509_verify_cert中,可以直接访问这个变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14366244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档