7

私は SSL に非常に慣れていません。実際、私はそれについて何も知りません。

「SSL_CTX_new」メソッドを使用して SSL_CTX オブジェクトを作成しています。このメソッドは null を返します。ドキュメントには、エラー スタックをチェックして原因を突き止めることができると書かれています。

したがって、エラーメッセージを取得するために使用する必要がある関数「int SSL_get_error(SSL *s,int ret_code)」があります。メソッドのドキュメントには、関数の最初のパラメーターについては何も書かれていません。2 番目の ("ret") パラメータは、次のいずれかである失敗した操作からの戻りコードと等しくなければならないことを示しているだけです。

SSL_connect()、SSL_accept()、SSL_do_handshake()、SSL_read()、SSL_peek()、または SSL_write()

だから今、私は2つの問題を抱えています。1つ目は、これらの関数を使用せず、戻りコードを返さないSSL_CTX_newを使用することです(SSX_CTXオブジェクトへのポインターを返します)。したがって、「ret」として何を入れるかわかりませんパラメータ。2番目の問題は、最初のパラメーターが何を意味するのか、何をそこに置くべきなのかがわからないことです。ドキュメントにはそれについて何も書かれていないからです。

4

2 に答える 2

8

http://www.mail-archive.com/openssl-users@openssl.org/msg51543.htmlによると、への呼び出しがない可能性がありますSSL_library_init()。これを SSL_CTX_NEW(..) 呼び出しの前に追加すると、NULL 値の問題が修正されました。

于 2012-11-07T04:17:47.933 に答える
8

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 関数を使用する必要があります。

こちらこちらをご覧ください

于 2009-05-25T16:43:51.080 に答える