我正在考虑使用使用Windows存储(通过回调)的证书验证过程来覆盖默认证书验证过程。该应用程序是一个web客户端,我需要接受公司范围内添加到系统存储中的自签名证书。
一旦我有了一条(可能是不完整的)链,我
但是链()返回可信链,只有在cert()运行后才可用。
我需要的是X509_STORE_CTX::untrusted (它只有握手的证书),但它显然不是通过API导出的。
我可以将最终证书传递给WinCrypt,但这意味着要下载我想要避免的中间证书。
我的问题是,我是不是在倒退?我应该让openssl构建链并进行验证,然后使用WinCrypt重做吗?这看起来很恶心。我可以添加一个X509_STORE_CTX_get_untrusted()函数并重新构建libeay32.dll,但我不希望如此。
发布于 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
中,可以直接访问这个变量。
https://stackoverflow.com/questions/14366244
复制相似问题