C++ SSL_CTX_new返回NULL后获取错误描述时出现问题
我对SSL非常陌生,实际上我会说我对它一无所知 我正在使用“SSL_CTX_new”方法创建一个SSL_CTX对象。该方法返回null。文档中说我可以检查错误堆栈,以便找到原因 因此,我有一个函数“int-SSL\u-get\u-error(SSL*s,int-ret\u-code)”,据我所知,为了获取错误消息,我必须使用这个函数。该方法的文档中没有提到函数的第一个参数。它只表示第二个(“ret”)参数应等于失败操作的返回码,该返回码可以是以下任意一种: SSL_connect()、SSL_accept()、SSL_do_handshake()、SSL_read()、SSL_peek()或SSL_write()C++ SSL_CTX_new返回NULL后获取错误描述时出现问题,c++,ssl,openssl,ssl-certificate,C++,Ssl,Openssl,Ssl Certificate,我对SSL非常陌生,实际上我会说我对它一无所知 我正在使用“SSL_CTX_new”方法创建一个SSL_CTX对象。该方法返回null。文档中说我可以检查错误堆栈,以便找到原因 因此,我有一个函数“int-SSL\u-get\u-error(SSL*s,int-ret\u-code)”,据我所知,为了获取错误消息,我必须使用这个函数。该方法的文档中没有提到函数的第一个参数。它只表示第二个(“ret”)参数应等于失败操作的返回码,该返回码可以是以下任意一种: SSL_connect()、SSL_a
所以现在我有两个问题。首先,我没有使用任何这些函数,而是使用SSL_CTX_new,它不返回任何类型的返回代码(它返回指向SSX_CTX对象的指针),因此我不知道将什么作为“ret”参数。第二个问题是,我不知道第一个参数是什么意思,我应该在那里放什么,因为doc没有提到它。您需要一个有效的上下文来创建SSL对象 由于无法创建上下文,因此无法使用SSL\u get\u错误 尝试使用ERR\u print\u errors查看出现了什么问题
#include "openssl/err.h"
...
SSL_CTX * ctx = SSL_CTX_new(....);
if(!ctx) {
ERR_print_errors_fp(stderr);
//throw or return an error
}
我刚刚阅读了SSL文档。如果需要以编程方式获取错误代码/错误字符串,则应使用ERR_get_error和ERR_error_string函数
查看一下,根据,您可能缺少对SSL\u library\u init()的调用。在SSL_CTX_NEW(..)调用之前添加此选项为我解决了空值问题。能否显示一些调用SSL_CTX_NEW的代码?感谢@Jay Taylor,您节省了时间即使缺少init调用是问题所在,此答案也无法解决实际问题,即如何获取错误消息。还可以向人们指出如何使用
ERR\u get\u error
(3)和朋友。