2012-04-15 56 views
10

按照关于page的说明,我尝试使用openSSL以安全方式连接客户端/服务器。OpenSSL:无法使用SSL_CTX_new创建SSL_CTX *()

我不能创建SSL_CTX如下:

/* OpenSSL headers */ 

#include "openssl/bio.h" 
#include "openssl/ssl.h" 
#include "openssl/err.h" 

int main() 
{ 

     /* Initializing OpenSSL */ 

     SSL_load_error_strings(); 
     ERR_load_BIO_strings(); 
     OpenSSL_add_all_algorithms(); 

     SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method()); 

     ..... 
    } 

的CTX引用总是原来是NULL。任何人都可以告诉我我错过了什么步骤?

谢谢。

更新

在检查错误,消息是

Error: library has no ciphers 

回答

15

我用下面的调用在main()函数的开始:

SSL_library_init(); 

解决方案在发现:here

+1

另请注意,你可以拥有这个如果您对'SSL_CTX_new()'使用了错误的参数,也会出现同样的错误。我发现了一些使用'SSLv2_client_method()'的代码。它编译并运行,但获得了NULL'ctx'值。 – kmort 2013-04-20 22:21:07