我目前正在将一些曾经使用RSA Security库的现有技术重写入OpenSSL,但我开始遇到一些问题。目前,所有的证书验证代码似乎都没有问题,直到我调用SSL_connect()。SSL_connect()产生证书验证失败
之前,对SSL_connect()的调用会产生SSL_ERROR_WANT_READ。
对另一个论坛的这个问题的回答告诉我,应该调用SSL_connect(),直到它停止产生SSL_ERROR_WANT_READ错误。不幸的是,这只会产生更多令人困惑的内容:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
即使SSL_CTX_load_verify_locations()成功。有没有人有任何想法,为什么验证错误不会注册证书方法,并等待直到SSL_connect()被触发?
感谢您的回复,但我认为我仍然有点困惑。我如何“接受任何证书”?我尝试在我的SSL_CTX_set_verify()方法调用中使用SSL_VERIFY_NONE,但我不认为这是我想要的路线。 另外,如何将一个回调附加到SSL_CTX_load_verify_locations()调用?我认为它不接受回调函数。呃,至少在C++中〜 – 2010-07-21 23:27:28
@ kelly.dunn:我添加了几个代码示例,可能有帮助。 我不明白你对回调函数和'C++'的评论:你可以在'C++'中编写和使用'C'回调,没有任何问题。只要注意指定了一个函数或一个** static **方法,而不是一个方法(由于隐藏'this'参数,它们的签名会有所不同)。 – ereOn 2010-07-22 07:50:48
哦,我只是混淆了你说的附加回调函数〜我忘了SSL_set_verify()接受一个作为它的最后一个参数。非常感谢!我会尽快执行此操作,看看它是否有帮助:D – 2010-07-22 08:55:20