我目前正在尝试使用C ++和XCode在Mac上创建HTTPS连接。
守则相当简单:
SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
SSL * ssl;
BIO * bio;
SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method());
std::string host = host_IPv4 + ":443"; // host_IPv4 given as std::string
if(ctx == NULL){
std::cout << ERR_reason_error_string(ERR_get_error()) << std::endl;
}
int load_error = SSL_CTX_load_verify_locations(ctx, "/path/to/ca.pem", NULL);
现在我将所有这些都放在一个函数中并将host_IPv4传递给它。该函数从main.cpp调用。
我的问题是ctx总是为NULL而我得到的错误是
库没有密码
我读了here我应该运行
SSL_library_init();
在任何其他SSL调用之前,但遗憾的是没有解决任何问题。无论我把代码放在哪里,仍然会得到相同的错误。
我在OS X 10.10上使用XCode 6.2和libssl 0.9.8以及libcrypto 0.9.8(他们预先安装了它们)。
有人有想法吗?
答案 0 :(得分:1)
好的,这是我的错:
我将ctx定义为全局变量,这种方式发生在SSL的init()之前。