2012-04-15 505 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