2009-05-25 31 views
6

我對SSL很新,實際上我會說我對此一無所知。SSL_CTX_new返回NULL後出現錯誤描述的問題

我正在使用「SSL_CTX_new」方法創建SSL_CTX對象。該方法返回null。文檔說,我可以檢查錯誤堆棧以獲取此原因。

因此,我必須使用函數「int SSL_get_error(SSL * s,int ret_code)」(據我所知),以便獲取錯誤消息。該方法的文檔沒有提到該函數的第一個參數。它僅表示第二個參數(「ret」)應該等於失敗操作的返回碼,它可以是以下任一項:

SSL_connect(),SSL_accept(),SSL_do_handshake(),SSL_read() ,SSL_peek()或SSL_write()

所以現在我有兩個問題。首先是我沒有使用任何這些函數,而是使用SSL_CTX_new,它不返回任何類型的返回碼(它返回一個指向SSX_CTX對象的指針)。所以我不知道該如何設置「ret」參數。第二個問題是我不知道第一個參數是什麼意思,我應該放在那裏,因爲文檔沒有提到它。

+0

你可以顯示一些你調用SSL_CTX_new的代碼嗎? – 2009-05-25 16:47:05

回答

6

您需要一個有效的上下文來創建SSL對象。

由於您無法創建上下文,因此無法使用SSL_get_error。

嘗試使用ERR_print_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函數。

看一看herehere

相關問題